Xcode 8 "Die Berechtigung für die APS-Umgebung fehlt in der Signatur der App" beim Senden

118

Ich habe eine App, bei der wir in den letzten 6 Monaten Dutzende von Versionen eingereicht haben, und wir verwenden APNS. Nach dem Upgrade auf Xcode 8 habe ich die folgende E-Mail von Apple erhalten

Lieber Entwickler,

Wir haben ein oder mehrere Probleme mit Ihrer letzten Lieferung für APP_NAME festgestellt. Ihre Lieferung war erfolgreich, aber Sie möchten möglicherweise die folgenden Probleme bei Ihrer nächsten Lieferung beheben:

Fehlende Push-Benachrichtigungsberechtigung - Ihre App enthält eine API für den Push-Benachrichtigungsdienst von Apple, aber die Berechtigung für die APS-Umgebung fehlt in der Signatur der App. Stellen Sie zur Behebung dieses Problems sicher, dass Ihre App-ID für die Push-Benachrichtigung im Bereitstellungsportal aktiviert ist. Signieren Sie dann Ihre App mit einem Distributionsbereitstellungsprofil, das die Berechtigung aps-environment enthält. Dadurch wird die richtige Signatur erstellt und Sie können Ihre App erneut einreichen. Weitere Informationen finden Sie unter "Bereitstellung und Entwicklung" im Programmierhandbuch für lokale und Push-Benachrichtigungen. Wenn Ihre App den Apple Push Notification-Dienst nicht verwendet, ist keine Aktion erforderlich. Sie können die API aus zukünftigen Übermittlungen entfernen, um diese Warnung zu beenden. Wenn Sie ein Framework eines Drittanbieters verwenden,

Nachdem Sie die Probleme behoben haben, können Sie mit Xcode oder Application Loader eine neue Binärdatei in iTunes Connect hochladen.

Grüße,

Das App Store-Team

Was seltsam ist, ist, dass ich zu developer.apple.com gegangen bin -> Zertifikate, Kennungen und Profile und auf meiner AppId sind Push-Benachrichtigungen noch aktiviert. Ich mache nichts anderes als jemals zuvor und bin gespannt, ob das Xcode 8-Update etwas kaputt gemacht hat. Irgendwelche Ideen?

Übrigens: Der Link, den sie für das Push Notification Programming Guide gesetzt haben, war in der E-Mail defekt, das ist also kein gutes Zeichen.

Unome
quelle

Antworten:

156

Eigentlich sehr einfach. Aus irgendeinem Grund wurde es auf Xcode 8 deaktiviert, aber gehen Sie zu Ziele -> Funktionen und überprüfen Sie, ob Push-Benachrichtigungen in dieser Ansicht korrekt sind. Für mich hatte es ein "Fix Me", auf das ich klicken musste, und voila.

Unome
quelle
4
Das Seltsame an diesem Problem war nicht die Lösung, sondern die Tatsache, dass dies auf Xcode 7 aktiviert und nach dem Upgrade deaktiviert wurde.
Unome
2
Ich musste auch in die Berechtigungsdatei gehen und den APS-Umgebungswert in "Produktion" ändern, da er beim Erstellen standardmäßig auf "Entwicklung" gesetzt war.
Bek
61
Es muss einige hirnlose Leute geben, die kürzlich in Apple eingestellt wurden. Warum verlieren sie Entwickler Zeit, indem sie Dinge standardmäßig deaktivieren und implizit unangemessene Werte festlegen, ohne davor gewarnt zu werden? Ich habe einen Tag beim Erstellen von Profilen, Zertifikaten, Debuggen und anderen nervigen Dingen verloren.
Hristo Atanasov
3
Schließlich! Das ist lächerlich, es war so schwer, es zum Laufen zu bringen. Ich habe die Zertifikate / Profile fast 5 Stunden lang entfernt und neu erstellt. Das Gute ist, dass ich sagen kann, dass ich jetzt vollständig verstehe, was diese Zertifikate / Profile / Kennungen sind :) Vielen Dank für diesen Hinweis.
Kamil Rykowski
4
@bek beachten Sie, dass Sie es wahrscheinlich als Entwicklung belassen sollten. Beim Hochladen auf iTunes Connect wird die Produktion automatisch aktiviert.
Montdidier
84

Ich habe auch das gleiche Problem und ich bin sicher, dass die Push-Benachrichtigung in Xcode8 standardmäßig deaktiviert ist. Ich habe es nicht bemerkt. Sei vorsichtig damit.

Fähigkeit

Bruce Tsai
quelle
Können Sie mir sagen, warum ich keinen Push-Benachrichtigungsbereich in meinem Konto habe?
Anuj
28

In Xcode 8 wurde eine Änderung vorgenommen, bei der Ihre Berechtigungen nicht mehr von den App-Kennungen stammen, sondern von den in Ihrem App-Ziel ausgewählten Funktionen. Wie Unome (das OP) sagte, müssen Sie also überprüfen, ob Push-Benachrichtigungen aktiviert sind.

Für mich war es kein "Fix Me" -Button, aber ich hatte zwei Berechtigungsdateien (eine für die Entwicklung und eine für die Verteilung). Durch Aktivieren der Push-Benachrichtigungsfunktion wird der aps-environmentSchlüssel - mit dem Wert development- zur Entwicklungsberechtigungsdatei hinzugefügt, jedoch nicht zur Verteilungsberechtigungsdatei. Durch das Kopieren desselben Schlüssels in die Distribution wurde die Warn-E-Mail beim Hochladen auf iTunes Connect entfernt.

Bei den meisten Projekten sollte es ausreichen, Push-Benachrichtigungen zu aktivieren. Wenn diese bereits aktiviert sind, der Schlüssel jedoch nicht in den Berechtigungen enthalten ist, versuchen Sie, ihn aus- und wieder einzuschalten.

Timgcarlson
quelle
Dies ist das Boot, in dem ich mich befinde, außer dass .entitlementses immer productionals das verwendet wird , unabhängig davon, was ich in meiner Datei für die aktuelle Konfiguration / das aktuelle Schema angegeben habe aps-environment.
Albert Bori
Beim Umschalten von Push Notificaition in Capabilities stürzt mein Xcode 8 ab !!
DJ
2
@ AlbertBori Seltsam, ich konnte es nur dazu bringen, die Entwicklung zu zeigen, was in Ordnung war, denn als es archiviert wurde, sah es so aus production.
Timgcarlson
6
@meteors Es sollte in Ordnung sein, wenn der Wert ist development. Sie wird in der IPA geändert, wenn das Projekt archiviert wird.
Timgcarlson
2
@timgcarlson Dies passiert tatsächlich nicht während der Archivierung. Dies geschieht während der Übermittlung oder beim Export. Auch einige nützliche Informationen, um zu überprüfen, ob es richtig eingestellt ist, finden Sie hier: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard
27

Aus den Xcode- Versionshinweisen :

Xcode 8 kopiert die Berechtigung für die APS-Umgebung zum Zeitpunkt der Erstellung nicht automatisch aus den Bereitstellungsprofilen. Dieses Verhalten ist beabsichtigt. Um diese Berechtigung zu verwenden, aktivieren Sie entweder Push-Benachrichtigungen im Bereich Funktionen des Projekteditors oder fügen Sie die Berechtigung manuell zu Ihrer Berechtigungsdatei hinzu. (28076333)

Dies ist eine große Änderung, da es immer seltsam war, dass für die Berechtigung für die APS-Umgebung keine Liste erforderlich war, aber viele andere.

Für diejenigen unter Ihnen, die nicht einfach blind auf "Fix Me" drücken möchten und derzeit keine Berechtigungsdatei haben, handelt es sich lediglich um eine Plist-Datei, auf die in den Build-Einstellungen Ihres Projekts unter "Codesignatur-Berechtigungen" verwiesen wird.

mattyohe
quelle
1
Ich konnte dieses Zitat in den verlinkten Notizen nicht finden!
Iulian Onofrei
Ich weiß nicht, wer meinen Kommentar positiv bewertet hat und was falsch war, aber ich kann ihn jetzt auch finden.
Iulian Onofrei
13

Nach einem Tag des Kampfes mit Xcode 8 konnten wir nicht herausfinden, warum die aps-environmentEntwicklung NICHT zu unseren Debug-Builds hinzugefügt wurde. Es fehlte im Abschnitt "Berechtigungen" in der erstellten App für Debug-Tests ... obwohl wir die neue Funktion AKTIVIERT hatten und die Berechtigungsdatei vorhanden war. Das Problem ist, dass die Berechtigungsdatei für JEDES SDK in den Xcode-Build-Einstellungen für Debug-Berechtigungen festgelegt werden muss.

Bildschirmfoto

James L Harris
quelle
Ich glaube nicht, dass es einen Unterschied zwischen dem Festlegen eines Werts für den DebugSchlüssel und dem Festlegen des Werts für den Debug> gibt Any SDK, da letzterer verwendet wird, um den Wert für ein bestimmtes SDK zu überschreiben.
Iulian Onofrei
Dies ist die Lösung für mich
Himanth
Nachdem ich den ganzen Morgen damit zu kämpfen hatte, war dies auch das Problem, das ich hatte. Das Umschalten von Funktionen, das Generieren von Bereitstellungsprofilen, nichts davon funktionierte. Das hat es getan.
Dave S
Dies ist in einigen Fällen immer noch eine gültige Lösung für Xcode 8.3.3
Dan
Ich wünschte, ich könnte dies millionenfach abstimmen. Ich habe seit einer Woche Probleme, und das war die Lösung. Es reichte nicht aus, nur den Dateipfad in die Code Signing Entitlements oben einzugeben, sondern musste auch im Teil "Any SDK" ausgeführt werden. Dies war der Schlüssel zur Lösung für mich.
Robert Bentley
7

Ich habe dieselbe E-Mail von Apple mit XCode 7.3.1 erhalten. Was ich getan habe, um das Problem zu lösen, war:

  1. Klicken Sie unter Funktionen> PUSH-Benachrichtigung auf EIN, wie in der Antwort von @Bruce Tsai angegeben.
  2. Legen Sie unter Build-Einstellungen> Codesignatur> Codesignaturidentität das Entwicklerzertifikat für das Debuggen und das Verteilungszertifikat für die Freigabe fest, wie in der Abbildung gezeigt:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Ruben
quelle
Hallo, In Funktionen bekomme ich keine Funktionen> PUSH-Benachrichtigung
einstellen
@Anuj, ich habe ein Screenshoot hinzugefügt, wo es in deinem Xcode sein sollte.
Ruben
5

Wenn Sie Firebase-Frameworks verwenden und keine Push-Benachrichtigungen verwenden, gibt es zwei Lösungen: 1. Stellen Sie einfach die Problemmeldung ein, die jedes Mal an Ihr gesamtes Team gesendet wird, wenn Sie eine Binärdatei hochladen. Die App wird weiterhin als Übermittlung akzeptiert, solange Sie keine Benachrichtigungen verwenden. Sie können die Warnung ignorieren. oder 2. tun Sie dies: https://stackoverflow.com/a/46802075/7529450 . Dadurch wird die lästige E-Mail-Benachrichtigung entfernt und auch als Übermittlung akzeptiert.

Aaron Halvorsen
quelle
4

Das automatische Verwalten der Signatur war für mich deaktiviert

Das automatische Verwalten des Signierens war für mich deaktiviert. Ich habe es überprüft und es funktioniert einwandfrei für mich.

Shemeer M Ali
quelle
3

Bei Verwendung von Xcode 9 wurden Push-Benachrichtigungen aktiviert.

Ich habe versucht, die Push-Benachrichtigungsfunktionen zu deaktivieren / wieder zu aktivieren . (hat nicht funktioniert)

Ich habe versucht , das Signieren automatisch zu deaktivieren / wieder zu aktivieren . (hat nicht funktioniert)

Es stellte sich heraus, dass ich meine Bereitstellungsprofile löschen und erneut hinzufügen musste. ( siehe hier, wie es geht ) Möglicherweise müssen Sie das automatische Verwalten der Signatur nach Stationen deaktivieren / wieder aktivieren .

Aldracor
quelle
2

Für mich war das Problem, weil es zwei Berechtigungsdateien gab: Entitlements-Debug.plistund Entitlements-Release.plist. Und nur einer von ihnen (Debug) hat Einstellungen benötigt.

Das Ändern des Mehrfachwerts von Build-Einstellungen>MyAppName/MyAppName.entitlements Signieren > Codesignatur- Berechtigungen in einen einzigen und das erneute Aktivieren von Funktionen > Push-Benachrichtigungs- Umschalter hat den Trick für mich getan.

Ich hoffe es hilft.

Alexander Zinchuk
quelle
0

Eine weitere Option, die funktioniert hat: Kopieren und Einfügen der Quelle von AppName/Entitlements-Debug.plistin AppName/Entitlements-Release.plist.

Alexander Zinchuk
quelle