Wie kann in Xcode 4.3 behoben werden, dass in Xcode 4.3 keine gültige Berechtigungszeichenfolge für die APS-Umgebung gefunden wurde?


153

Ich habe mich sehr bemüht, eine einfache iOS-App zu erstellen, die Push-Benachrichtigungen empfangen kann. Mein einziger Grund dafür ist, ein Verfahren festzulegen, das einige andere Teammitglieder verwenden können, und es war mir nicht möglich, eine aktuelle, funktionierende Version solcher Anweisungen an anderer Stelle im Web zu finden. Unser Shop ist für iOS-Entwickler ziemlich neu. Ich persönlich bin mit iOS-Entwicklern und Xcode völlig unerfahren. Ich bin durch Dutzende von Tutorials, Artikeln und Problemposts von Apple und anderswo gestolpert und habe das Gefühl, fast da zu sein ...

Hier muss ich (beachten Sie, dass ich Xcode 4.3 verwende und zunächst versuche, nur für iOS 5.1 bereitzustellen, und ich stelle fest, dass sich einige Dinge in letzter Zeit gegenüber früheren Versionen von Xcode geändert haben, aber ich bin wieder neu für alle dies - und es völlig verwirrend und verwickelt zu finden):

1) Ich habe ein Bereitstellungsprofil auf meinem iPhone, für das Push aktiviert ist

2) In meinem Test-Xcode-Projekt wurde dieses Bereitstellungsprofil als Signaturidentität ausgewählt (unter Build-Einstellungen> Codesignatur).

Geben Sie hier die Bildbeschreibung ein

3) Ich habe meine Bundle-ID unter Zusammenfassung und Info> Benutzerdefinierte iOS-Zieleigenschaften richtig eingestellt * (glaube ich ??)

4) Ich habe registerForRemoteNotificationTypes in didFinishLaunchingWithOptions meines Delegaten aufgerufen

5) Ich habe didRegisterForRemoteNotificationsWithDeviceToken und didFailToRegisterForRemoteNotificationsWithError in meinem Delegaten eingerichtet, um das Gerätetoken bzw. den Fehler zu protokollieren

6) Ich habe die Option Berechtigungen aktivieren unter Zusammenfassung aktiviert.

7) Direkt darunter ist die ausgewählte Berechtigungsdatei Tinker6 (der Name meines Testprojekts), die automatisch generiert wurde, als ich Berechtigungen aktivieren aktiviert habe

8) In der Tinker6.entitlements-Datei habe ich Folgendes (was ich gesammelt habe, ist korrekt, basierend auf mehreren verschiedenen Posts im gesamten Web, aber ich kann nichts Bestimmtes von Apple selbst finden):

Geben Sie hier die Bildbeschreibung ein

Aktualisiert

9) Außerdem habe ich das Ganze ohne Berechtigungsdatei ausprobiert und erhalte im Wesentlichen das gleiche Ergebnis.

10) Der Inhalt meiner MobileProvision-Datei enthält Berechtigungen (ich habe die Nummer und die Domain verschlüsselt, aber strukturell gleich):

<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
    <string>12355456A7.*</string>
</array>

/ Update beenden

Wenn ich versuche, dies auf meinem Gerät auszuführen, wird in der Xcode-Ausgabe der folgende Fehler angezeigt:

2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: 
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' 
entitlement string found for application" UserInfo=0x24a3b0 
{NSLocalizedDescription=no valid 'aps-environment' entitlement string 
found for application}

Ich habe versucht, get-task-allow auf NO zu setzen, aps-environment auf Produktion, alle vier möglichen Kombinationen, dasselbe.

Wie komme ich daran vorbei? Wo ist die endgültige Dokumentation dazu?

- weiterer Hintergrund folgt -

* In Bezug auf die Bundle-ID ist mir immer noch nicht klar, wie dies in Bezug auf App-IDs und Profil-IDs im Bereitstellungsprofil festgelegt werden soll. Im Bereitstellungsportal unter App-IDs habe ich Folgendes (erneut die Nummer und die Domain verschlüsselt):

Geben Sie hier die Bildbeschreibung ein

Und die zwei Stellen Bundle ID ist gesetzt Ich habe dies:

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

Ich bin mir überhaupt nicht sicher, ob diese korrekt sind oder ob einer oder beide auf 12355456A7.com.whatever.tinker gesetzt werden sollten, obwohl ich diese früher im Prozess ohne Erfolg ausprobiert habe ...

Hinweis Ich stelle fest, dass es viele Posts mit ähnlichen Titeln gibt, die jedoch aufgrund der angegebenen Dateinamen usw. veraltet zu sein scheinen und keine der Lösungen nützlich zu sein scheint. Ich hoffe, dass die von mir angegebene Detailgenauigkeit eine qualitativ hochwertige Antwort rechtfertigt. Ich werde wahrscheinlich so schnell wie möglich ein Kopfgeld vergeben. Wenn Sie eine qualitativ hochwertige Antwort geben, die zu einer Lösung führt, werde ich Ihnen das Kopfgeld gewähren und Ihre Antwort über Twitter und meinen Blog bewerben. Vor allem, wenn Sie einen wirklich guten Artikel in Ihrem Blog veröffentlichen, "hier sind genau die 500 Schritte, die Sie benötigen, um eine einfache Push-Benachrichtigungs-App zum Laufen zu bringen, einschließlich Bereitstellung und was auch immer".

Antworten:


94

Wenn Sie Ihr Bereitstellungsprofil vor dem Konfigurieren des erstellt haben app ID for Push erstellt haben, versuchen Sie, das Bereitstellungsprofil neu zu generieren.

iOS Provisioning Portal -> Provisioning -> Ihr Zertifikat -> BEARBEITEN -> Bearbeiten -> Neue Provisioning herunterladen

Hat für mich gearbeitet. Jetzt kann ich Push verwenden.


Können Sie genauer sagen, was genau "das Bereitstellungsprofil neu generieren" bedeutet? Ist dies ein Schritt in XCode im Bereitstellungsportal, wo? Vielen Dank!
JWL

2
Im Portal. Fügen Sie einfach ein Gerät hinzu oder entfernen Sie es, und Ihre Bereitstellung wird generiert. Doppelklicken Sie danach und installieren Sie es in Ihrem Schlüsselbund.
Elp

Entschuldigung, wenn ich dicht bin, aber unter Geräte hinzufügen / entfernen? Oder irgendwo unter dem fraglichen Bereitstellungsprofil, und wenn ja, wo genau?
JWL

Das Hinzufügen oder Entfernen von Geräten ist ein Trick, um Ihre Bereitstellung neu zu generieren. Sie müssen eine neu generieren, um die Push-Benachrichtigung zu verwenden, da sie mit der App-ID und dem Push-Zertifikat verknüpft ist.
elp

69

Zunächst benötigen Sie die Berechtigungsdatei nur, wenn Sie benutzerdefinierte Schlüssel / Wert-Paare hinzufügen, die im Bereitstellungsprofil nicht vorhanden sind. Wenn Ihre App erstellt wird, werden alle Berechtigungen aus dem Bereitstellungsprofil in die App kopiert.

Da immer noch eine Fehlermeldung über fehlende Berechtigungen angezeigt wird, kann ich nur davon ausgehen, dass die Codesignaturoptionen in den Build-Einstellungen nicht korrekt sind.

Sie müssen sicherstellen, dass das richtige Profil für die "Debug" -Konfiguration ausgewählt ist, und um sicherzugehen, dass Sie das richtige Profil sowohl für den "Debug" - als auch für den untergeordneten Knoten mit der Bezeichnung "Any iOS SDK" ausgewählt haben:

Geben Sie hier die Bildbeschreibung ein

Obwohl dieser Screenshot das ausgewählte Profil "Automatischer Entwickler" zeigt, wählen Sie zu Testzwecken das genaue Bereitstellungsprofil aus der Dropdown-Liste aus. Möglicherweise wählt Xcode automatisch ein anderes Profil als das gewünschte.

Stellen Sie außerdem sicher, dass Sie einen sauberen Build erstellen, die App vollständig von Ihrem Gerät löschen usw. Dies dient nur dazu, sicherzustellen, dass keine alten Flusen herumhängen.


Gemäß # 2 in meinem Beitrag ist es meiner Meinung nach richtig eingestellt, obwohl ich zur Verdeutlichung einen klarstellenden Screenshot hinzugefügt habe. Ich habe auch versucht, die App vollständig zu entfernen und sie für 2 Tage auszulassen, gemäß einer Empfehlung, die ich irgendwo gesehen habe, dass es einen Tag dauert, bis einige Informationen zurückgesetzt werden (ja, ich greife nach Strohhalmen!?). Aber wenn Sie sagen "Sie müssen sicherstellen, dass das richtige Profil für die" Debug "-Konfiguration ausgewählt ist", was genau meinen Sie - wo wähle ich das aus?
JWL

Wenn Sie auf den Teil "iPhone Developer" klicken oder was auch immer als aktueller Wert festgelegt ist, wird eine Dropdown-Liste aller Bereitstellungsprofile angezeigt, die Xcode kennt. Stellen Sie sicher, dass das richtige ausgewählt ist oder dass das Element "Automatischer Entwickler" das richtige auswählt. Das Dropdown sollte Ihnen alles zeigen.
Mike Weller

Und sind Sie sicher, dass Sie das neueste Bereitstellungsprofil haben? Könnte es sein, dass Sie eine alte Version haben, bevor Push aktiviert wurde?
Mike Weller

2
Ja, das glaube ich. Um das neue Bereitstellungsprofil zu erhalten, habe ich in Xcode Organizer das Profil sowohl aus der Bibliothek als auch vom Gerät gelöscht und dann auf dem Bibliotheksbildschirm wieder auf Aktualisieren geklickt. Dadurch wurde es wieder aus dem Bereitstellungsportal entfernt. Ich habe dies dann dem Gerät hinzugefügt. Und wie oben gezeigt, zeigt der XML-ish-Inhalt der MobileProvision-Datei die richtigen Berechtigungen
jwl

3
Ach, sorry. Es muss eine sein , -vor dem Pfad: codesign -d --entitlements - /path/to/my.app. An dieser Stelle lohnt es sich auch zu überprüfen, ob Sie sich im Debug-iphoneos-Verzeichnis befinden, da "Show In Finder" Sie manchmal an den falschen Ort bringen kann.
Mike Weller

64

Ich habe dieses Problem in Xcode 8 festgestellt. Sie müssen Ziel -> Funktionen -> Push-Benachrichtigung aktivieren. Überprüfen Sie den Screenshot.

Geben Sie hier die Bildbeschreibung ein


1
Das hilft mir !!!! Klicken Sie einfach auf eine Schaltfläche ... um mein Problem zu lösen, das ich stundenlang debugge ... auch Xcode8.
Veck Hsiao

3
OMG danke! Komm schon Apple, gib uns eine vernünftigere Fehlermeldung!
Ferran Maylinch

Xcode 8 deaktiviert Push-Benachrichtigungen für meine App, daher funktionierte diese Lösung.
Kevin

1
Vielen Dank, ich muss die anderen Einrichtungsschritte dreimal ausgeführt haben, bevor ich dies gefunden habe. Ich fühle mich wie ein Idiot, aber auch, dass die Werkzeuge schlecht dafür sind, dass dies das Problem ist.
Collin Flynn

Du hast meinen Tag gerettet, Kumpel!
oskarko

47

Am einfachsten ist es, dies von Ihren Konten mit Xcode aus zu tun:

Gehen Sie zu Xcode -> Einstellungen -> Wählen Sie die Registerkarte "Konten" -> Details anzeigen -> Klicken Sie unten links auf die Schaltfläche "Aktualisieren" -> "Fertig".

Bauen Sie erneut und es sollte funktionieren.


19

Ok, ich hatte das Problem schon einmal. Da für die Push-Benachrichtigung eine serverseitige Implementierung erforderlich ist, war die Neuerstellung des Profils für mich keine Option. Deshalb habe ich diese Lösung gefunden, OHNE ein neues Bereitstellungsprofil zu erstellen.

Xcode wählt das richtige Bereitstellungsprofil nicht richtig aus, obwohl wir es richtig auswählen.

Gehen Sie zuerst zum Veranstalter. Wählen Sie auf der Registerkarte Geräte unter Bereitstellungsprofil aus der Liste Bibliothek das gewünschte Profil aus, das wir verwenden möchten. Klicken Sie mit der rechten Maustaste darauf und dann auf "Profil im Finder anzeigen".

Geben Sie hier die Bildbeschreibung ein

Das richtige Profil wird im geöffneten Finder-Fenster ausgewählt. Notieren Sie den Namen.

Geben Sie hier die Bildbeschreibung ein

Gehen Sie nun zu Xcode> Log Navigator. Wählen Sie den Filter für "Alle" und "Alle Nachrichten". Suchen Sie nun in der letzten Phase (Build Target) nach dem Schritt "ProcessProductPackaging" und erweitern Sie ihn. Notieren Sie den Namen des Bereitstellungsprofils. Sie sollten NICHT übereinstimmen, wenn Sie den Fehler haben. Geben Sie hier die Bildbeschreibung ein

Löschen Sie nun im Fenster "Geöffneter Finder" das von Xcode verwendete Rogue-Bereitstellungsprofil. Jetzt wieder bauen. Der Fehler sollte behoben sein. Wenn nicht, wiederholen Sie den Vorgang, um ein anderes Schurkenprofil zu finden, um es zu entfernen.

Hoffe das hilft.


Dies war meine Schuld, wurde aber mit dieser Methode behoben. Ich hatte versehentlich eine andere Kennung in das Infobox eingegeben, mit der ich das Zertifikat erstellt habe.
JavaCoderEx

18

Die Antwort lautete: Beginnen Sie von vorne, machen Sie alles gleich, erstellen Sie jedoch ein neues Bereitstellungsprofil und installieren Sie es. Das hat funktioniert. Das Überprüfen aller Details (Berechtigungen bei der mobilen Bereitstellung) sieht genau aus das gleiche wie alles in meiner Frage hier. Aber jetzt funktioniert es. Apple: WAT?

Natürlich wäre es naheliegend gewesen, dies zu tun, wenn es möglich gewesen wäre, Bereitstellungsprofile zu löschen. Aber da dies nicht möglich ist, wollte ich unser Team nicht mit einer Reihe von Testprofilen überladen. Trotzdem verlor ich endlich die Geduld und versuchte es trotzdem, und es funktionierte schließlich. Was auch immer.


Das Erstellen eines neuen Profils und das "Verschmutzen" des alten Profils, wie es in dieser anderen SO-Frage gesagt wird, hat für mich funktioniert
scurioni

Ich musste lediglich das vorhandene Bereitstellungsprofil aus dem Portal löschen und neu erstellen. Sie können Profile jetzt nach dem Update löschen, sodass Sie keine neue App-ID erstellen müssen.
odyth

Ein neues Bereitstellungsprofil mit derselben App-ID und demselben Verteilungszertifikat hat das Problem für mich behoben. +1 :)
Azik Abdullah

18

Löschen Sie das alte Bereitstellungsprofil aus XCode in Organizer.

Generieren Sie anschließend ein neues Bereitstellungsprofil für dieselbe Bundle-ID im iOS-Bereitstellungsportal (nachdem Sie Push aktiviert haben).

Importieren Sie das neue Bereitstellungsprofil in XCode und legen Sie es in Ihren App-Build-Einstellungen fest.

Erstellen, ausführen, es funktioniert.

Ich habe es einfach gemacht.

Ich habe 10 Minuten vom Fehler bis zum Erfolg gebraucht.


Dies ist derjenige, der auch für mich gearbeitet hat. Das Bearbeiten des alten Bereitstellungsprofils und das Herunterladen funktionierten bei mir nicht. Vielen Dank!
Prageeth

Als hilfreiches Addendum konnte ich, anstatt ein neues Bereitstellungsprofil zu erhalten, einfach das alte löschen
ritmatter

1
Ich würde wärmstens empfehlen, es nicht von Hand zu machen. Verwenden Sie github.com/fastlane/PEM .
Fatuhoku

16

XCode 6.1.1 und mehrere Apple-Entwicklerkonten

Eine weitere Antwort auf diese bereits ziemlich umfassende Mischung: Ich bin heute wieder auf dieses Problem gestoßen, und diesmal lag es daran, dass ich mehrere Apple-Konten hatte. Ich musste zuerst das 2. Entwicklerkonto unter XCode> Einstellungen> Konten> + hinzufügen

Stellen Sie sicher, dass die Push-Benachrichtigungsfunktion aktiviert ist

Als nächstes musste ich den In-App-Kauf in der App explizit aktivieren (dies war zuvor nicht erforderlich). XCode> (das App-Fenster)> Ziele> Funktionen> In-App-Kauf EIN (und zu diesem Zeitpunkt hatte ich die Möglichkeit, das richtige Zertifikat auszuwählen).

Beachten Sie, dass ich das Push-fähige Zertifikat bereits durch Doppelklicken im Finder hinzugefügt habe.

Geben Sie hier die Bildbeschreibung ein


Ich schätze, als ich auf die Xcode 8 Beta umgestiegen bin, habe ich meinen Push-Benachrichtigungsschalter oder so etwas ausgeschaltet. Vielen Dank
inVINCEable

Danke, deshalb hatte ich dieses Problem. Meine App-ID ist für In-App-Kauf, Game-Center usw. aktiviert, aber in Xcode / Funktionen sind sie alle zuvor deaktiviert, kein Problem. Seitdem ich auf Xcode 8 aktualisiert habe, habe ich dieses Problem. Nach dem Aktivieren von IAP und Game Center in Xcode ist das Problem behoben!
Ethan Long

11

(Xcode 5) Nun, nachdem ich eine Stunde verbracht hatte, löste ich mein Problem. Selbst wenn Sie die Bereitstellungsdatei in Xcode 5 neu generieren, sollten Sie Ihr Konto manuell aktualisieren. Ich habe nur die Bereitstellungsdatei auf der Registerkarte "Organizer" geändert, die nicht funktioniert hat. Xcode wurde weiterhin mit der alten Bereitstellungsdatei erstellt.

Also geh zu

Xcode> Einstellungen> Konten> Details anzeigen (Wählen Sie Ihr Konto aus)

Aktualisieren Sie dann Ihre Bereitstellungsdateien.


7

Mein Problem war einfach, dass ich mit dem von Xcode verwalteten Wildcard-Bereitstellungsprofil signierte.

Nachdem ich ein app-spezifisches Profil erstellt (und heruntergeladen, doppelklickt und sichergestellt hatte, dass meine Build-Einstellungen darauf verweisen), habe ich erfolgreich ein APNS-Geräte-Token erhalten.


Ich hatte auch dieses Problem. Xcode 5 ist ziemlich gut darin, Bereitstellungsprofile zu aktualisieren. Ich habe den APNS-Dienst später in der Entwicklung hinzugefügt. Sie müssen sicherstellen, dass das Bereitstellungsprofil tatsächlich das Profil ist, das für die App, an der Sie arbeiten, eindeutig ist, und kein Platzhalter.
Michael

@ Michael, wie stellen Sie das sicher? Ich habe versucht, es in meinen Build-Einstellungen (unter Codesignatur) zu ändern, die derzeit auf "Keine" eingestellt sind. Wenn ich das richtige Profil auswähle und erstelle, wird ein Fehler angezeigt und ich gehe dann zum Platzhalter-Bereitstellungsprofil zurück.
Ian Jamieson

@ian welchen Fehler bekommst du? Sind Sie sicher, dass es sich um ein gültiges Profil handelt?
Michael

Ah, ich habe es sortiert, ich musste das richtige Zertifikat erneut auf meinen Mac herunterladen. Das scheint den Trick getan zu haben. Vielen Dank.
Ian Jamieson

Froh das zu hören. Das mache ich normalerweise, wenn es scheint, dass die Einstellungen korrekt sind. Wiederholen Sie alle Zertifikate. Scheint mehrmals das Problem zu sein.
Michael

6

Ich hatte das gleiche Problem wie alle anderen und habe alle oben genannten Tricks ausprobiert, nichts hat funktioniert. Ich habe sogar gelöscht und mit einem anderen Entwicklerkonto neu angefangen.

Was am Ende für mich funktioniert hat, war

  1. Gehen Sie wie oben vorgeschlagen vor und erstellen Sie eine APP-ID
  2. Erstellen Sie dann ein Bereitstellungsprofil
  3. Verwenden Sie NICHT das Team-Platzhalterprofil (verwaltet von xcode one) im Entwicklungsabschnitt der Bereitstellung. Sie müssen eine separate App mit der App-ID erstellen, für die Sie die Push-Benachrichtigung aktiviert haben. Auf diese Weise ist bei der Entwicklung die Push-Benachrichtigungsfunktion integriert.

Ich weiß nicht, ob Sie das für eine Wildcard-App aktivieren können, aber nachdem ich mindestens 12 verschiedene Vorschläge ausprobiert und ein paar Tage verloren habe, hoffe ich, dass dies jemandem hilft


2
Dies fügt jedoch nichts zu den vorhandenen Antworten hinzu, die diesen Rat bereits geben. Offensichtlich benötigt eine Push-App ein eigenes Profil. In den Dokumenten wird deutlich, dass das Platzhalterprofil nicht für Apps verwendet werden kann, für die spezielle Berechtigungen erforderlich sind.
Matt

1
Ich habe dies getan, aber meine App wählt immer nur das Wildcard-Bereitstellungsprofil aus. Ich kann es nicht zwingen, das Profil mit aktivierten Push-Benachrichtigungen auszuwählen.
Ian Jamieson

3

Sie erwähnen ein Bereitstellungsprofil, aber ich sehe keine Erwähnung eines Apple Push-Profils.

Um Push verwenden zu können, müssen Sie über ein Push-Profil verfügen (es gibt zwei, eines für die Entwicklung und eines für die Freigabe). Nachdem Sie es erstellt haben, müssen Sie sicherstellen, dass es die relevanten Zertifikate enthält (siehe Abschnitt BEARBEITEN unten).

Dies ist ein ausgezeichnetes Tutorial, das Sie durch alle Schritte führt:

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

Ich oder sonst jemand würde Stunden und Stunden brauchen, um eine ausführliche Antwort wie dieses Tutorial zu schreiben, also werde ich es nicht versuchen oder Anspruch auf die Prämie erheben, wenn dieses Tutorial bereits existiert.

PS Ich glaube, Sie brauchen keine Ansprüche mehr, das ist eine Legacy-Sache.

BEARBEITEN: Sie sollten auch überprüfen, ob Sie die erforderlichen Profile auf dem Gerät haben - gehen Sie zu den Einstellungen, dann Allgemein, Profile, überprüfen Sie, ob Ihre Profile aufgelistet sind, insbesondere natürlich das Push-Profil. Sie können dies auch im Organizer-Bereich von XCode überprüfen. In Organizer gibt es zwei Abschnitte, in denen Bereitstellungsprofile angegeben sind - einen oben links in der Bibliothek (dies sind die Profile in XCode, die Sie zum Signieren verwenden usw.). Außerdem wird ein Abschnitt mit dem Aufruf Bereitstellungsprofile für das angeschlossene Gerät angezeigt ist das Profil, das auf dem Mobilteil installiert ist. Wenn Sie sie nicht auf dem Mobilteil installiert haben, können Sie sie von der Website des Bereitstellungsportals herunterladen und dann unten im Organizer-Fenster auf die Schaltfläche Hinzufügen klicken.

Während Sie sich im Bereitstellungsportal befinden, sollten Sie auch überprüfen, ob das Apple Push-Profil die Zertifikate enthält: - Klicken Sie im linken Menü auf Bereitstellung - Sie sehen eine Liste Ihres Profils, wählen Sie, um das Apple Push-Profil zu bearbeiten - Sie werden sehen Stellen Sie in einem Abschnitt mit Zertifikaten mit einer Liste der Entwickler oder Tester usw., die Sie in Ihrem Projekt haben, sicher, dass das Kontrollkästchen für diese aktiviert ist. - Außerdem wird ein Geräteabschnitt angezeigt. Stellen Sie sicher, dass das Gerät, auf dem Sie testen, hinzugefügt wurde.

Wenn Sie alte Profile in XCode oder auf dem Gerät haben, löschen Sie diese und laden / aktualisieren / installieren Sie alle neuen Profile vom Bereitstellungsportal


Wenn Berechtigungen eine Legacy-Sache sind, warum erhalte ich dann eine Nachricht, in der ich mich über keine Berechtigungen beschwere? Ich habe das verlinkte Tutorial zum Brief bereits ohne Glück verfolgt ... danke.
JWL

Außerdem habe ich einige Informationen zur eigentlichen MobileProvision-Datei hinzugefügt, die nützlich sein könnten.
JWL

Das stimmt, ich richte nicht einmal .entitlements ein, um Benachrichtigungen erfolgreich zu pushen. Eine Sache, die mich dabei stolperte, war, dass ich die mobile Bereitstellung manuell herunterladen, dann Einstellungen erstellen und die Signaturidentität so ändern musste, dass sie mit der gerade heruntergeladenen übereinstimmt. In meinem Fall wählt Xcode anscheinend die mobile Wildcard-Bereitstellung aus.
X Slash

Auch ich habe vor einiger Zeit eine Fehlermeldung über Berechtigungen erhalten, es ist ein roter Hering, siehe Mike Wellers Antwort, das habe ich in meinem Fall getan.
Gruntcakes

Ich habe die Antwort mit einigen weiteren Dingen aktualisiert, die Sie überprüfen können.
Gruntcakes

2

Ich bin selbst auf dasselbe Problem gestoßen. Für mich bestand das Problem darin, dass mein Produktname ($ TARGET_NAME) nicht auf die gleiche Weise großgeschrieben wurde, wie dies im von Apple bereitgestellten Zertifikat angegeben ist. Zum Beispiel hatte ich com.companyid.APNDemo, während das Apple-Zertifikat com.companyid.apndemo verwendete.

Ich habe mein Ziel in Kleinbuchstaben geändert und es hat funktioniert. Hinweis: Der Hinweis für mich war, dass die Codesignierungseinstellung in den Build-Einstellungen auf mein Standardentwicklerzertifikat festgelegt wurde. nicht das APNTest-Bereitstellungsprofil.


1

Viele der obigen Antworten sind richtig. Es scheint jedoch mehr als einen möglichen Fehler zu geben, wenn man sich damit befasst.

Das Problem war die Großschreibung meiner App-ID. Meine App-ID wurde aus irgendeinem Grund nicht großgeschrieben, meine App jedoch. Nachdem ich die App-ID mit korrekter Großschreibung neu erstellt hatte, funktionierte alles reibungslos. Hoffe das hilft. Aber verdammt frustrierend.

PS Wenn es immer noch nicht funktioniert, versuchen Sie, das Code Signing Identity Field manuell mit "edit" zu bearbeiten. Ändern Sie die zweite Zeile mit dem Namen des richtigen Bereitstellungsprofilnamens.


1

Ich habe Stunden gebraucht, um es zu lösen. Angesichts der Tatsache, dass jemand benutzerdefinierte Skripte zum Signieren und Packen verwendet, während andere xcode selbst verwenden, gibt es nur einen Weg, um zu überprüfen, was in Ihrer App endete. Dump Sie Ansprüche mit

codesign --display --entitlements :- path/to/MyApp.app

und überprüfen aps-environmentund application-identifier.


Ich habe das gleiche Problem konfrontiert. Ich wollte nur fragen, ob der Pfad zur App für eine App ist, die auf dem Simulator installiert ist.
Ajeet

Nein, es ist der Pfad der kompilierten App für das eigentliche Gerät im xcode-Erstellungsverzeichnis.
Dwery

1

Dieser Fehler kann auftreten, wenn Ihr Zertifikat abgelaufen ist.

Die Lösung besteht darin, das Zertifikat zu erneuern und die Anwendung damit zu signieren.


1

Sie müssen sicherstellen, dass Sie in Ihren Bereitstellungsprofilen ( https://developer.apple.com/account/ios/profile/ ) ein iOS-Verteilungsprofil haben.

Stellen Sie beim Hochladen von xCode in den App Store sicher, dass die Berechtigungen die APS-Umgebung enthalten. Wenn nicht, laden Sie sie über Konten anzeigen -> Details anzeigen -> Alle herunterladen herunter.


1

Ich hatte ein ähnliches Problem. Ich habe aus verschiedenen Gründen zwischen XCode 7 und 8 gewechselt. Sobald Sie 8 zum Erstellen verwenden, müssen Sie 8 verwenden. Ich habe einfach Xcode 8 verwendet und einige der oben vorgeschlagenen Änderungen angewendet, und es hat funktioniert.



0

Die "automatischen" Berechtigungen in Xcode 4.6 scheinen etwas Eigenartiges zu sein.

Für jedes SDK gibt es eine Entitlement.plist-Datei unter:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/Entitlements.plist

Eine Problemumgehungslösung, die ich mir ausgedacht habe, bestand darin, diese Datei zu bearbeiten und den hinterhältigen APS-Umgebungsschlüssel manuell wie folgt hinzuzufügen:

<?xml version="1.0" encoding="UTF-8"?>
<!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>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
</dict>
</plist>

Anschließend generiert Xcode die richtige Xcent-Datei, die den APS-Umgebungsschlüssel enthält:

/Users/mySelf/Library/Developer/Xcode/DerivedData/myApp-buauvgusocvjyjcwdtpewdzycfmc/Build/Intermediates/myApp.build/Debug-iphoneos/myApp.build/myApp.xcent

Mit dem Log Navigator von Xcode können Sie feststellen, wo Ihre Xcent-Datei erstellt wurde.
Suchen Sie nach "ProcessProductPackaging".

Leider ist dies der einzige Weg, den ich gefunden habe, um das Problem zu beheben .
(und endlich in der Lage, Push-Token jetzt richtig zu bekommen)

Ich frage mich nur, ob eine andere elegantere Lösung verfügbar ist.
Weitere Informationen hierzu finden Sie in meiner SO-Frage:
Xcode 4.6 automatische Berechtigung funktioniert nicht - "Keine gültige APS-Umgebung"


0

Stellen Sie vor dem Löschen und Wiederherstellen von AppIDs / Profilen sicher, dass in Ihrer Bibliothek und Ihrem Gerät dieselben (und korrekten) Profile installiert sind.

Nach der Migration auf einen neuen Computer wurde dieser Fehler angezeigt. Push hatte vor der Migration ordnungsgemäß funktioniert.

Das Problem war (duh), dass ich die Profile nicht in die Xcode-Bibliothek auf dem neuen Computer importiert hatte (in Organizer / Geräte unter Bibliothek-> Bereitstellungsprofile).

Der verwirrende Teil war, dass das GERÄT bereits die richtigen Profile hatte und sie wie erwartet in den Build-Einstellungen angezeigt wurden, sodass dort alles korrekt aussah, aber die XCode-BIBLIOTHEK hatte sie nicht, also signierte sie die App mit ... ?? ?


0

Das hat es für mich behoben. (Ich hatte bereits versucht, die Funktionen ein- und auszuschalten, das Bereitstellungsprofil neu zu erstellen usw.).

Auf der Registerkarte " Build-Einstellungen" in " Code Signing Entitlements" war meine .entitlements- Datei nicht für alle Abschnitte verknüpft. Nachdem ich es dem Abschnitt " Beliebiges SDK" hinzugefügt hatte , wurde der Fehler behoben.

Geben Sie hier die Bildbeschreibung ein


0

Ich habe alle hier aufgeführten Antworten ausprobiert, aber niemand hat mein Problem gelöst. In meinem Fall ist dieser Fehler auf meinen dummen Fehler bei der Appid-Erstellung zurückzuführen. Ich habe die Wildcard-App-ID anstelle der expliziten App-ID verwendet, die das Problem verursacht hat

Wenn Sie eine Anwendung möchten Remote - Benachrichtigungen (Push - Benachrichtigung) zu empfangen, dann müssen Sie ein verwenden Explicit App - ID , wie com.tutsplus.push , statt com.tutsplus. *

Hier finden Sie den Screenshot, Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.