Ich habe gelesen, woher xcode die Kennung der Anwendung bezieht. , Formatierung der XCode-Bundle-ID aus {PRODUCT_NAME} und mehr, aber ...
Ich versuche, Push-Benachrichtigungen in Gang zu bringen und die gefürchteten zu bekommen
"Error Domain = NSCocoaErrorDomain Code = 3000" Keine gültige Berechtigungszeichenfolge 'aps-environment' für Anwendung gefunden "UserInfo = 0x15b200 {NSLocalizedDescription = keine gültige Berechtigungszeichenfolge 'aps-environment' für Anwendung gefunden}" Fehler.
Ich bin mir ziemlich sicher, dass ich alle Schritte korrekt ausgeführt habe, einschließlich:
- machte das Push-Zertifikat weit vor dem Bereitstellungszertifikat
- hat eine 'Entitlements.plist' erstellt
- hat einen booleschen Wert für get-task-allow hinzugefügt und auf true gesetzt (Ad-hoc-Version)
Der einzige Gedanke, den ich nicht richtig verstehen kann, ist der Bundle Identifier
Das Push-Zertifikat ist für
XXXXXXXXXX.com.julianbaker.pwcnewsuk
Der Bundle Indentifier in PwCNewUK-Info.plist ist für
com.julianbaker.${PRODUCT_NAME:rfc1034identifier}
Wenn ich es manuell ändere
com.julianbaker.pwcnewsuk
Ich erhalte einen UDID-Fehlanpassungsfehler, da die App als PwCNewsUK angezeigt wird
Wenn ich das gegoogelt habe, scheint es einige Verwirrung in der Sache zu geben, aber es scheint, dass sie übereinstimmen müssen?
FRAGE:
Was sollte der Bundle Indentifer sein, um mit dem Push-Zertifikat von XXXXXXXXXX.com.julianbaker.pwcnewsuk übereinzustimmen
?
FRAGE:
Muss ich dem Bereitstellungsprofil eine Berechtigung "aps-environment" hinzufügen, und wenn ja, wo und wie? (Siehe unter anderem http://www.airplaysdk.com/node/3174 )
Liebevolle iPhone-Entwicklung, aber meine Güte, es kann manchmal ein Headbanger sein!
quelle
Antworten:
Ich habe diese Frage gefunden, als ich in einer Anwendung, an der ich arbeite, von einer Entwicklungsumgebung zu einer Produktionsumgebung gewechselt bin. Dieser Prozess beinhaltete die Erstellung eines neuen Profils, einer neuen App-ID usw. Ich habe die App-ID und ein Profil erstellt, aber der Team-Agent musste die Push-Benachrichtigungen konfigurieren. Beim Versuch, den Test mit dem neuen Profil fortzusetzen (nachdem die App für Push-Benachrichtigungen konfiguriert wurde), stieß ich auf das Problem, dass für die Anwendung keine gültige Berechtigungszeichenfolge für die APS-Umgebung gefunden wurde. Ich erinnerte mich dann daran, eine kleine Einschränkung in der Dokumentation gelesen zu haben:
"Sie müssen das Profil auf irgendeine Weise ändern (z. B. eine Option umschalten), damit das Portal ein neues Bereitstellungsprofil generiert. Wenn das Profil nicht so" schmutzig "ist, erhalten Sie das Profil ohne die Push-Berechtigungen. ""
Quelle: Programmierhandbuch für lokale und Push-Benachrichtigungen
Für mich war das "Verschmutzen" des Bereitstellungsprofils und die Neuinstallation alles, was zur Behebung des Problems erforderlich war. Gemäß der Dokumentation war dies erforderlich, da das Bereitstellungsprofil erstellt wurde, bevor die App für Push-Benachrichtigungen konfiguriert wurde. Dies kann niemandem helfen oder auch nicht, aber dies erklärt (und beseitigt) wahrscheinlich die Notwendigkeit, dem Bereitstellungsprofil manuell etwas hinzuzufügen.
quelle
Ich bin auf das gleiche Problem "Keine gültige Berechtigungszeichenfolge für APS-Umgebung für Anwendung gefunden" gestoßen, aber die oben genannten Lösungen haben bei mir nicht funktioniert.
Ich konnte keine sehr gute Dokumentation über diesen Fehler oder nur die Schlüssel "aps-Umgebung" finden.
Nach einigem Basteln hat das Problem für mich gelöst:
Öffnen Sie Ihr Entwicklungsbereitstellungszertifikat "Appname.mobileprovision" mit einem Texteditor, suchen Sie nach dem Schlüssel "Berechtigungen" und fügen Sie alle hier gefundenen Werte zu Ihrer Berechtigungsdatei hinzu, auf die durch Ihre Einstellung für Codesignaturberechtigungen verwiesen wird.
Hier ist ein Beispiel dafür, welche Schlüssel / Werte darin enthalten sind:
<key>application-identifier</key> <string>xyz.com.xyz.xyz</string> <key>aps-environment</key> <string>development</string> <key>com.apple.developer.ubiquity-container-identifiers</key> <array> <string>xyz.*</string> </array> <key>com.apple.developer.ubiquity-kvstore-identifier</key> <string>xyz.*</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>xyz.*</string> </array>
Nachdem ich alle diese Werte zu meiner Berechtigungsdatei hinzugefügt habe, wird meine App erfolgreich erstellt und ich kann endlich wieder an Push-Benachrichtigungen arbeiten.
Ich bin nicht sicher, ob diese Werte von XCode automatisch zu Ihrer Berechtigungsdatei hinzugefügt werden sollen, aber sie wurden in meinem Projekt sicherlich nicht für mich generiert.
quelle
Konfiguration:
Mac OS X 10.8 + Xcode 4.4
Meine einfache Lösung:
xcuserdata
Ordner.Einige Hinweise zu diesem Thema:
Nachdem ich Push-Benachrichtigungen für meine App aktiviert hatte, konnte ich plötzlich keine Ad-hoc-Dateien mehr erstellen. Beim Versuch, meine App zu installieren, sind Fehler in meinem Konsolenprotokoll auf meinem iPhone aufgetreten:
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'keychain-access-groups' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'get-task-allow' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'application-identifier' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] <Error>: 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394 Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.44jV0O/foo_extracted/Payload/PersonalTrainer-Tester-iPhone.app Apr 1 20:56:11 unknown com.apple.itunesstored[392] <Notice>: MobileInstallationInstall: failed with -1 Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 install_application: Could not preflight application install Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 handle_install: API failed Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003 Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_error: Could not send error response to client
Es gibt einige technische Hinweise, in denen empfohlen wird,
codesign -d --entitlements - <YourAppName>.app
zu überprüfen, ob Ihre App für Apple Push-Benachrichtigungen ordnungsgemäß signiert ist. Falls für die Ausgabe des Codesign-Befehls keine Aps-Umgebung auf Produktion oder Entwicklung eingestellt ist, ist etwas faul!Soweit ich bisher wusste, haben meine mit einem Ad-hoc-Bereitstellungsprofil signierten Apps immer einen Ordner
embedded.mobileprovision
im<YourAppName>.app
Ordner, in dem sich ein bestimmter Teil befindet, z.<key>Entitlements</key> <dict> <key>application-identifier</key> <string>ABCDEFGH.com.myappname.tester</string> <key>aps-environment</key> <string>production</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string>ABCDEFGH.*</string> </array> </dict>
Nachdem ich Codesign verwendet hatte, stellte ich fest, dass in der eigentlichen Binärdatei
<YourAppName>.app
auch XML enthalten war, das etwas ganz anderes sagte als meineembedded.mobileprovision
Datei:<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>ABCDEFGH.com.myappname.tester</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>ABCDEFGH.com.myappname.tester</string> </array> </dict> </plist>
Ich gehe davon aus, dass dies die Ursache für die Fehlermeldung ist, die wir alle haben. (obwohl dieser Fehler einige andere Wurzeln haben kann, wie auch andere Beiträge im Stapelüberlauf vermuten lassen)
The executable was signed with invalid entitlements. The entitlements specified in your application's Code Signing Entitlements file do not match those specified in your provisioning profile. (0xE8008016).
Ich vermute, dass es in Xcode einen Fehler gibt, der verhindert, dass die Einstellungen in Ihrer Liste in Ihren Schemata aktualisiert werden, was dazu führt, dass Ihre App am Ende mit dem falschen Bereitstellungsprofil signiert wird. Wenn Sie also den Ordner xcuserdata löschen, löschen Sie alle Schemata. Daher erstellt Xcode sie beim nächsten Mal mit den richtigen Einstellungen neu und Sie sind wieder glücklich.
quelle
Im Wesentlichen ist die Antwort dieselbe vage, die alle anderen sagen
Wiederholen Sie diese Schritte ruhig, bis es funktioniert. Ich brauchte ungefähr fünf Mal verschiedene Kombinationen. Ich habe auch von Entwicklung zu Ad-hoc gewechselt, was anscheinend nicht notwendig ist, aber eine neue mobile Bereitstellungsdatei garantiert hat.
quelle
Mit XCode4 und dem Erhalt der gleichen Berechtigungszeichenfolge "Keine gültige 'APS-Umgebung' für Anwendung gefunden" musste ich Folgendes tun:
quelle
Stellen Sie unter 'Projekt' -> 'Build-Einstellungen' -> 'Codesignatur' sicher, dass Sie das richtige Bereitstellungsprofil ausgewählt haben (das mit aktiviertem Push).
Das war alles, was ich ändern musste, damit es funktionierte.
quelle
Keines der oben genannten hat bei mir funktioniert!
quelle
Stellen Sie sicher, dass Sie die App mit dem Bereitstellungsprofil ordnungsgemäß verwenden.
Ich meine, wenn Sie Ihre App nur für Push-Benachrichtigungen für die Verteilung aktiviert haben und versuchen, Push-Benachrichtigungen über das Erstellen mit XCode zum Laufen zu bringen, funktioniert dies nicht.
Ich bin auf dieses Problem gestoßen. Durch Aktivieren der Push-Benachrichtigung für die Entwicklung für die App-ID und anschließendes Verwenden des Entwicklungsbereitstellungsprofils wurde der Fehler nicht mehr angezeigt, und in der richtigen Warnansicht wurde gefragt, ob ich Push-Benachrichtigungen erhalten möchte.
quelle
Die Lösung für 10.8 Xcode 4.4 besteht darin, die
appname.entitlements
Datei zu öffnenund wenn der
DataProtectionClass
Schlüssel den Wert hatNSFileProtectionComplete
, löschen Sie ihn!Durch Löschen dieses Schlüssels kann ich Apps von Xcode auf Geräten testen (dies hatte keinen Einfluss auf die Simulation).
quelle
Ich hatte das gleiche Problem. Für mich war das Update wie folgt:
Das Platzhalterprofil ([Präfix]. *) Funktioniert nicht, wenn Sie versuchen, eine APN-fähige Anwendung auszuführen. Sie müssen das APN-fähige Profil angeben.
quelle
Ich habe das erst nach ein paar Stunden herausgefunden, also zusätzlich zu dem, was JulianB gesagt hat:
quelle
Bei mir hat es funktioniert, nachdem ich die Bundle-ID in etwas Zufälliges geändert habe. Stellen Sie sicher, dass der Signaturfehler tatsächlich angezeigt wird (entfernen Sie alle Bereitstellungsprofile von Organizer und Gerät und führen Sie
CMD + OPT + SHFT + K
dannCMS + SHFT + K
und dann einen sauberen Build durchCMD + R
), und ändern Sie dann die Bundle-ID wieder in die entsprechende.quelle
Meine Lösung bestand darin, das Entwicklungsbereitstellungsprofil zu entfernen und erneut zu erstellen . Es wurde als "Ungültig" aufgeführt - nicht abgelaufen und auch Erneuerung fehlgeschlagen (Xcode 4.3.2 und iOS 5.1)
quelle
Stellen Sie sicher, dass Sie richtig ausgewählt haben. Provisionierungs Profil. Ich habe festgestellt, dass ich es mit dem Team Provisioning-Profil versucht habe ( für die Anwendungskennung: * ). Weiter unten in der Liste gab es das richtige für die App.
quelle
Mein Problem war das. Ich habe eine App erstellt, die Push-Benachrichtigungen konfiguriert hat, und im App-Delegaten habe ich mich für Push-Benachrichtigungen registriert mit:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
Vor der Veröffentlichung der App musste ich jedoch ein neues Bereitstellungsprofil auf einem anderen Entwicklerportal erstellen. Ich habe eine neue App-ID erstellt, eine neue Bereitstellung für Entwicklung und Verteilung erstellt, eine neue Bereitstellung heruntergeladen und im Anwendungsziel die richtige Bereitstellung festgelegt. Außerdem habe ich die Bundle-ID geändert. Aber ich habe diesen Fehler bekommen.
Problem war, dass die neue AppId nicht für Push-Benachrichtigungen konfiguriert wurde, sondern für Anrufe
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
hat einen Fehler verursacht. Bei der Konfiguration der Push-Benachrichtigungen wurde der Fehler nicht erneut angezeigt.
quelle
Ich hatte dieses Problem, das Szenario war:
Ich hatte eine App-ID ohne Unterstützung für Push-Benachrichtigungen eingerichtet. Ich benutze Xcode 5.1 + iOS 7.1
Später wurde die App-ID bearbeitet, um Push-Benachrichtigungen in Entwicklung und Produktion hinzuzufügen.
Erstellt die APNs-Zertifikate für beide.
Wenn Sie PN mit Ihrem an Xcode angeschlossenen Gerät testen, funktioniert alles in Ordnung. Das Problem tritt auf, wenn Sie die App für die Produktion freigeben. Sie erhalten immer wieder:
"Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x15b200 {NSLocalizedDescription=no valid 'apsenvironment' entitlement string found for application}" error.
Die Lösung, die für mich funktioniert hat, war :
quelle
Machen Sie das Profil richtig und das funktioniert für mich. Hoffen Sie diese Hilfe.
quelle
In meinem Fall erwies sich die Lösung für diesen Fehler nach stundenlangem Basteln mit Zertifikaten als einfach ...
Auf der
Capabilities
Registerkarte der Projektkonfiguration musste ich dasPush Notification
Flag aktivieren , damit die Umgebungsdateien generiert werden konnten.macOS Sierra 10.12 - Xcode 8.1
quelle
Tatsächlich wurde Ihr vorläufiges Profil von der Apple-Entwicklerseite gelöscht. Sie erhalten eine Fehlermeldung für
quelle