Für die Anwendung wurde keine gültige Berechtigungszeichenfolge "aps-environment" gefunden

83

Ich versuche, meine App so zu konfigurieren, dass Push-Benachrichtigungen unterstützt werden, erhalte jedoch weiterhin den folgenden Fehler: Fehler beim Abrufen des Tokens, Fehler: Fehler Domain = NSCocoaErrorDomain Code = 3000 "Keine gültige Berechtigungszeichenfolge" aps-environment "für Anwendung" UserInfo = 0x1f818fc0 { NSLocalizedDescription = Keine gültige Berechtigungszeichenfolge 'aps-environment' für Anwendung gefunden}

  • Ich habe meine App aktiviert, um Push-Benachrichtigungen zu unterstützen (derzeit nur für die Entwicklung).
  • Ich habe das Bereitstellungsprofil erstellt, nachdem die Push-Benachrichtigungen aktiviert wurden.
  • Meine Bundle-ID ist dieselbe wie im Profil.
  • In meiner Profildatei gibt es eine Zeichenfolge: aps-environment
  • Ich habe sichergestellt, dass sowohl im Projekt als auch im Ziel im Abschnitt "Identität der Codesignatur" ALLE Werte als mein Bereitstellungsprofil ausgewählt sind.

Noch mehr Ideen? Vielen Dank.

Bashan
quelle
Keine Einsicht darüber? Es sieht so aus, als würden viele auf etwas stoßen ...
Bashan

Antworten:

64

In meinem Fall das Zeug in meinem Bereitstellungsprofil:

security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision 
...
<key>application-identifier</key>
<string>P5GM95Q9VV.com.dca.spolsky</string>
<key>aps-environment</key>
<string>development</string>

War anders als das Material in der App, das tatsächlich erstellt wurde (Sie können herausfinden, wo es erstellt wurde, indem Sie auf die Registerkarte "Protokolle" von Xcode schauen).

codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app'
<dict>
    <key>application-identifier</key>
    <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    </array>
</dict>

Dies stimmte , obwohl der Hinweistext "Derzeit übereinstimmt" unter "Code Signing Identity" das richtige Bereitstellungsprofil anzeigte - seltsam, oder? Um eine seltsame Geschichte seltsamer zu machen, wurde beim Ausführen das richtige Bereitstellungsprofil auf dem Gerät installiert (Einstellungen-> Allgemein-> Profile), was mich zu der Annahme veranlasste, dass das Bereitstellungsprofil richtig war - aber es wurde auf eine Platzhalter-ID zurückgegriffen als die App tatsächlich gestartet wurde .

Der Hinweis war der Unterschied in der Ausgabe dieser beiden Befehle:

Y2X6Z7Z2GR .com.dca. spolsky-ios vs P5GM95Q9VV .com.dca. spolsky

Als ich das fettgedruckte Teil übereinstimmen ließ, wurde das kursiv geschriebene Teil so geändert, dass es automatisch übereinstimmt. Darüber hinaus stimmten die Ausgabe von Sicherheit und Codesign überein und es gab keinen APS-Berechtigungsfehler mehr.

Ich vermute hier, dass XCode eine Übereinstimmung im Wildcard-Stil für meine Nicht-Wildcard-ID verwendet hat. ("spolsky" ist immerhin fast "spolsky-ios"), und dies erklärt die Ausgabe "Aktuelle Übereinstimmungen". Da jedoch etwas in der Build-Kette strenger ist, wird während des Builds auf eine tatsächliche Platzhalter-ID zurückgegriffen .

Drew
quelle
7
Ich hatte ein ähnliches Problem: Die Projekt-Build-Einstellungen unterschieden sich von den ZIEL-Build-Einstellungen. In meinem Fall waren meine Zieleinstellungen standardmäßig die falschen Bereitstellungsprofile.
Rob
1
Als ich dies entdeckte, stieß ich auf dasselbe Problem.
Codemonk
1
Einer meiner Mitarbeiter hatte dieses Problem mit der Bereitstellung. Ich konnte den Nicht-Platzhalter-Bereitstellungsschlüssel jedoch erst auswählen, nachdem ich die Profileinstellungen in Xcode aufgerufen und die Liste der Zertifikate / Bereitstellungsschlüssel aktualisiert hatte.
cbh2000
1
Meine Zieleinstellungen für "Debuggen" waren iOS Developer / Automatic, was dazu führte, dass meine .app mit der falschen Codesignaturidentität herauskam. Ich musste die Einstellungen meines Projekts und Ziels für Debug und Release explizit festlegen, um meine neue Codesignatur-ID zu verwenden. Mein Problem wurde behoben. Es ist nicht nur Ihr Bereitstellungsprofil, sondern Sie müssen auch diese Codesignaturidentitäten überprüfen. Ohne diese fantastischen Terminalbefehle hätte ich es nicht lösen können!
Selbstname
6
Nur zur Veranschaulichung: Damit Push-Benachrichtigungen funktionieren, muss ein bestimmtes Bereitstellungsprofil mit der Bundle-ID der App und nicht eines mit dem Platzhalter * verwendet werden .
mgarciaisaia
37

Das Problem ist darauf zurückzuführen, dass das aktuelle Bereitstellungsprofil keine APNS-Informationen enthält, da das Bereitstellungsprofil VOR dem Erstellen des APNS-Zertifikats erstellt wird.

Um das Problem zu lösen, erstellen Sie daher ein neues Bereitstellungsprofil und wählen Sie das Bereitstellungsprofil in Xcode aus, um den Fehler zu beheben.

Raubvogel
quelle
Bei mir hat es nicht funktioniert. Alle anderen Hinweise. Bitte schauen Sie sich das an: stackoverflow.com/questions/25679750/…
Ajeet
29

Ich hatte das gleiche Problem, nachdem Push-Benachrichtigungen bereits auf meinem Gerät funktionierten. Es schien, als hätte Xcode etwas falsch zwischengespeichert, so dass das Aktualisieren mein Problem behoben hat:

  1. Xcode -> Einstellungen -> Konten
  2. Zeigen Sie Details für Ihr Entwicklerkonto an
  3. Klicken Sie einfach einige Male auf Aktualisieren für die Bereitstellungsprofile. Ich sah diese Änderung bei jeder Aktualisierung. Erfrischen Sie sich so lange, bis sie sich nicht mehr ändern.
Oren
quelle
Seltsamerweise hat das bei mir funktioniert! Ich habe aktualisiert, bis die Aktualisierung beendet wurde, dann meinen Build-Ordner bereinigt und dann XCode neu gestartet. Dies geschah, nachdem ich die Bundle-ID im Bereitstellungsprofil und in der erstellten App überprüft hatte (wo sie in beiden übereinstimmte, was mich weiter verwirrte).
Sean Michael Dorian
Es gibt keine Schaltfläche zum Aktualisieren (?) Mehr
Gerry
9

Ich habe diesen Fehler erhalten und kein neues Bereitstellungsprofil erstellt. hat einen neuen erstellt und musste dann xCode neu starten, funktioniert aber jetzt!

jasonpurdy
quelle
9

Beachten Sie, dass die Bundle-ID in Groß- und Kleinschreibung mit dem Bereitstellungsprofil übereinstimmen muss . Ich hatte so etwas wie com.FirstLast.appname, wenn es com.firstlast.appname hätte sein sollen. Nun, das hat mich eine ganze Weile beschäftigt.

sudo
quelle
Ich hatte das gleiche Problem, das hat es für mich behoben.
Kuba
9

Ich habe dieses Problem behoben, indem ich die Push-Benachrichtigungsfunktion aktiviert habe.

Wählen Sie Projekt> Ziel> Funktionen> Push-Benachrichtigungen aktivieren

Schauen Sie sich das Bild an

Fehler 404
quelle
3

Wenn dieses Problem nach dem Upgrade auf Xcode 8 plötzlich auftritt, wird im Funktionsbildschirm möglicherweise eine Warnung angezeigt, mit der Sie dies automatisch beheben können:

Wählen Sie Projekt> Ziel> Funktionen> Push-Benachrichtigungen aktivieren

Departamento B.
quelle
Das hat mich vor Kopfschmerzen bewahrt. Vielen Dank!
Jpaljasma
2

Produkt-> Sauber hat es für mich getan. Hoffentlich macht es das für jemand anderen.

Louis Cremen
quelle
Ich mache beide Reinigungen. Hilfreich ist auch die sekundäre Bereinigung über Befehl-Option-Shift-K.
zeichnete ..
2

Ich bin darauf in einem möglicherweise nicht häufigen Anwendungsfall gestoßen. Ich arbeite mit Xcode 6 und iOS 8. Ich habe eine Reihe völlig neuer App-Projekte erstellt und versucht, dieselbe Bundle-ID erneut zu verwenden, um nicht das gesamte portalseitige Setup erneut durchführen zu müssen. Auch dies war nur für Sandbox-Tests.

Ich würde feststellen, dass, während das Setup und die Registrierung für die erste App gut funktionieren würden, ich diese App vom Gerät löschen, dieselbe Bundle-ID für die zweite App festlegen und dann versuchen würde, PNs mit dieser App zu registrieren, die ich erhalten würde dieser Fehler.

Meine Lösung war:

  1. Entfernen Sie das zugehörige Bereitstellungsprofil vom Gerät.
  2. Entfernen Sie das zugehörige Bereitstellungsprofil aus Xcode.
  3. Schließen Sie Xcode
  4. Doppelklicken Sie auf meine heruntergeladene .mobileprovisionDatei, um sie wieder in Xcode zu installieren
  5. Öffnen Sie das Projekt und stellen Sie es bereit.

Dieser Ansatz scheint den vorherigen Status zu verlieren, und ich kann mich für PNs mit der neuen App / derselben Bundle-ID registrieren.

KevinH
quelle
2

Für diejenigen, die diesen Fehler in iOS 10 erhalten haben, können Sie die folgenden Schritte versuchen:

1. Reinigen Sie Ihr Projekt.
2.und überprüfen Sie Ziele -> Funktionen -> Push-Benachrichtigung. Wenn diese Option deaktiviert ist, aktivieren Sie sie.

Und das Problem wird gelöst. Die obigen Schritte helfen mir, dieses Problem zu beseitigen. Hoffe es wird jemandem helfen.

Bittu
quelle
0

Neues Bereitstellungsprofil hat bei mir funktioniert. Stellen Sie sicher, dass Sie ein Entwicklerprofil verwenden, wenn Sie sich in der Entwicklung befinden (verwenden Sie kein Ad-hoc-Profil). Danach war es in Ordnung, keine Ahnung, warum der alte nicht mehr richtig funktionierte.

user3344717
quelle