Nur um noch etwas zusätzliche Farbe zu den Fragen und Antworten zum Zertifikat/Server/SSL hinzuzufügen, die vorgeschlagen wurden:
Prod/Sandbox APNS basierend auf Codesign-Einstellungen ausgewählt
Zum Zwecke der Gründlichkeit wollen wir mit einer kurzen Übersicht der APNS-Umgebung beginnen:
- Anwendungen, die mit einem iOS-Entwicklungs-Zertifikat signiert sind, verbinden sich mit der Sandbox-APNS-Umgebung und warten darauf, dass Push-Benachrichtigungen geliefert werden.
- Anwendungen, die mit einem iOS-Verteilungs-Zertifikat signiert sind (AppStore oder Verteilung > Ad-Hoc), verbinden sich mit der Produktions-APNS-Umgebung und warten darauf, dass Push-Benachrichtigungen geliefert werden.
- Diese Einstellung wird automatisch von Xcode während des Build-Prozesses bestimmt und kann nur konfiguriert werden, indem der Typ des im CodeSign-Schritt verwendeten Zertifikats ausgewählt wird.
Frage 1: Muss ich das Entwicklung-SSL-Zertifikat auf meinem Server installieren, um Push-Benachrichtigungen von mit einem Entwicklungszertifikat signierten Apps zu testen?
Ja, sobald eine App signiert ist, wird ihre APNS-Einstellung anhand der Regeln im vorherigen Abschnitt im Binärcode versiegelt. Es liegt dann an dem Servercode des Entwicklers zu wissen, dass das APNS-Token, das das Gerät generieren wird, zur Sandbox-APNS-Umgebung gehört und dass der Server diese Anforderung für eine Push-Benachrichtigung an gateway.sandbox.push.apple.com weiterleiten sollte.
Einige Entwickler entscheiden sich dafür, einen Server einzurichten, der diese Unterscheidungen treffen kann, während andere sich dafür entscheiden, nebeneinander Instanzen ihrer Server einzurichten, wobei einer auf die Produktion und ein anderer auf die Sandbox sendet.
Wie auch immer, die Entscheidung liegt beim individuellen Entwickler und was der Serverseitige Code leisten kann und der relativen Komplexität beim Einrichten eines zweiten Servers. Auf jeden Fall könnten Benutzer verärgert sein, wenn Sie versehentlich die Produktions-Push-Benachrichtigungen deaktiviert haben, während Sie neue Funktionen testen, und vergessen haben, sie später wieder zu aktivieren, also seien Sie unbedingt vorsichtig, wenn Sie in der Produktionsumgebung herumexperimentieren!
Frage #2: Werden sich das Entwicklungszertifikat und das Produktionszertifikat widersprechen?
Vom reinen SSL-Standpunkt aus werden sie sich nicht widersprechen - Sie sollten in der Lage sein, beide Zertifikate auf einem anderen als dem Server installierten Computer herunterzuladen, zu öffnen und zu prüfen, dass die Inhalte der Zertifikate tatsächlich unterschiedlich sind. Das Importieren in dieselbe Serverumgebung (wieder vom SSL-Standpunkt aus gesehen) ist völlig zulässig. Um sicherzustellen, dass sie unterschiedlich sind, stellen Sie bei der Anforderung der Zertifikate unbedingt sicher, dass Sie zwei verschiedene certificateSigningRequests erstellen und Sie werden zwangsläufig mit unterschiedlichen Daten enden.
Vom Standpunkt des serverseitigen Push-Codes des Entwicklers aus - Es kommt darauf an. Sehen Sie das Gespräch in Frage 1 über die Fähigkeiten des serverseitigen Codes. Wenn der Servercode mit diesem Gedanken entworfen wurde, dann ist die theoretische Antwort ebenfalls 'Nein, sie werden sich nicht widersprechen', aber das ist eine Entscheidung, die der einzelne Entwickler über die Fähigkeiten seines eigenen serverseitigen Codes treffen muss.