objective c - without - Ändert sich das APNS-Geräte-Token jemals, sobald es erstellt wurde?




swift push notification (8)

APNs können aus verschiedenen Gründen ein neues Geräte-Token ausgeben:

  • Der Nutzer installiert Ihre App auf einem neuen Gerät

  • Der Benutzer stellt das Gerät von einer Sicherung wieder her

  • Der Benutzer installiert das Betriebssystem neu

  • Andere systemdefinierte Ereignisse

Daher müssen Apps das Geräte-Token zum Zeitpunkt des Starts anfordern.

Verweisen - Apple Docs

NB: APNs Geräte Tokens sind von variabler Länge. Schreiben Sie ihre Größe nicht fest.

Wurde das Push-Benachrichtigungs-Token jemals geändert?

Beispiel wenn die App aktualisiert wird? oder in jedem anderen Fall kann es ändern ??


Als Hinweis auf Apple-Push-Benachrichtigungen

Das Geräte-Token ist Ihr Schlüssel zum Senden von Push-Benachrichtigungen an Ihre App auf einem bestimmten Gerät. Geräte-Token können sich ändern. Daher muss sich Ihre App bei jedem Start neu registrieren und das empfangene Token an Ihren Server zurückgeben. Wenn Sie das Geräte-Token nicht aktualisieren, werden Remote-Benachrichtigungen möglicherweise nicht auf das Gerät des Benutzers geleitet. Geräte-Token ändern sich immer, wenn der Benutzer Sicherungsdaten auf einem neuen Gerät oder Computer wiederherstellt oder das Betriebssystem neu installiert. Wenn Sie Daten auf ein neues Gerät oder einen Computer migrieren, muss der Benutzer Ihre App einmal starten, bevor Remote-Benachrichtigungen an dieses Gerät gesendet werden können.

Niemals ein Geräte-Token zwischenspeichern; Holen Sie das Token immer dann aus dem System, wenn Sie es benötigen. Wenn Ihre App zuvor für Remotebenachrichtigungen registriert wurde, führt der erneute Aufruf der Methode registerForRemoteNotifications zu keinem zusätzlichen Aufwand, und iOS sendet das vorhandene Gerätetoken sofort an Ihren Anwendungsdelegaten zurück. Darüber hinaus ruft iOS Ihre Delegate-Methode jedes Mal auf, wenn sich das Geräte-Token ändert, nicht nur, wenn Ihre App registriert oder neu registriert wird.


Aus [Apple Dokumentation ApplePushService] 2

Die Form dieser Token-Trust-Phase stellt sicher, dass nur APNs das Token generieren, das sie später honoriert, und sie kann selbst sicherstellen, dass ein Token, das ihr von einem Gerät ausgehändigt wird, dasselbe Token ist, das sie zuvor für dieses bestimmte Gerät bereitgestellt hat für dieses Gerät.

Wenn der Benutzer Sicherungsdaten auf einem neuen Gerät wiederherstellt oder das Betriebssystem neu installiert, ändert sich das Geräte-Token.


Das Gerät Token Relais bei der Installation der App.

Dies bedeutet, dass sich die Anwendung bei einer Neuinstallation ändert . Es trifft nicht zu, wenn Sie es von einem Backup, einem iOS-Upgrade usw. machen.

Der richtige Weg, um jedes Problem zu vermeiden, besteht darin, das in NSPAppDelegate bei jedem Anwendungsstart in der Methode didRegisterForRemoteNotificationsWithDeviceToken


Dies sollte sich nicht ändern, es sei denn, Ihre App wird auf einem neuen Gerät wiederhergestellt (zu diesem Zeitpunkt wird sie nicht mehr aufgefordert, Push-Benachrichtigungen zu akzeptieren und sendet Ihnen einfach den registrierten Anruf, an dem Sie das neue Token annehmen sollten).

Aber Apple garantiert nicht, dass es sich nie ändert (daher erwähnt die Dokumentation es nie). Sie programmieren besser auf das Schlimmste und nehmen an, dass es sich eines Tages ändern kann. Wenn Sie ein Token regelmäßig an Ihren Server senden, können Sie auch Token entfernen, die für eine Weile nicht registriert wurden. Wahrscheinlich haben Sie Ihre App vor einiger Zeit deinstalliert oder das Interesse verloren (und in der Dokumentation wird dies als gewünschtes Verhalten angegeben!).


Links werden mit Apple schnell veraltet! also zitiere ich, was jetzt ganz klar zu sein scheint:

Verwende nie Geräte-Token in deiner App. Holen Sie sie stattdessen aus dem System, wenn Sie sie brauchen. APNs gibt ein neues Geräte-Token an Ihre App aus, wenn bestimmte Ereignisse eintreten. Das Geräte-Token wird garantiert unterschiedlich sein, beispielsweise wenn ein Benutzer ein Gerät von einer Sicherung wiederherstellt, wenn der Benutzer Ihre App auf einem neuen Gerät installiert und der Benutzer das Betriebssystem erneut installiert. Durch das Abrufen des Tokens, anstatt sich auf einen Cache zu verlassen, wird sichergestellt, dass Sie über das aktuelle Geräte-Token verfügen, das für die Kommunikation Ihres Providers mit APNs erforderlich ist. Wenn Sie versuchen, ein Geräte-Token abzurufen, aber es hat sich nicht geändert, kehrt die Methode fetch schnell zurück.

Aus diesem Leitfaden


JA , Geräte-Token können sich ändern.

Immer wenn Ihre App ein Token erhält, sollte es gespeichert werden. Dann, wenn ein neues Token empfangen wird (was schließlich passieren wird), vergleichen Sie das neue Token mit dem gespeicherten Token und, falls sie unterschiedlich sind:

  1. Aktualisieren Sie den lokalen Speicher des Geräts (möglicherweise auch bis nil )
  2. Aktualisieren Sie alles auf dem Gerät, das den Token verwendet, um das neue Token zu erkennen
  3. Aktualisieren Sie alle APIs, die dieses Token kennen, auf das neue Token.

In der Praxis ist der letzte Schritt am wahrscheinlichsten nicht trivial. Wenn Sie beispielsweise einen Dienst haben, der basierend auf der Postleitzahl, die das Gerät abonniert hat, Wetterwarnungen an ein Geräte-Token sendet, müssen Sie das old_token und das new_token an diesen Dienst übergeben, damit die Zustellung aktualisiert werden kann.

Ergo müssen im Allgemeinen 100% der APIs, die ein "Geräte-Token" akzeptieren, auch eine Art UPDATE Einrichtung für dieses Token haben. Nicht dafür zu bauen ist, für fehlgelieferte und nicht ausgelieferte Benachrichtigungen zu bauen.


Ja, es kann sich ändern. Idealerweise immer dann, wenn wir ein Token über die Callback-Methode erhalten

  • (void) Anwendung: (UIApplication *) Anwendung didRegisterForRemoteNotificationsWithDeviceToken: (NSData *) deviceToken

Die App sollte das Token auf dem Remote-Server registrieren / aktualisieren. Dadurch wird sichergestellt, dass das Token auf dem APNS und auf Ihrem Server synchron bleibt.

Laut Apple Dokumentation ,

Das Beziehen und Bearbeiten eines anwendungsspezifischen Geräte-Tokens funktioniert folgendermaßen:

Ihre App registriert sich bei APNs für Remote-Benachrichtigungen Wenn ein neues Geräte-Token benötigt wird, generiert APNs eines, das Informationen verwendet, die im Zertifikat des Geräts enthalten sind. Er verschlüsselt das Token mithilfe eines Tokenschlüssels und gibt es an das Gerät zurück, wie im mittleren, nach rechts weisenden Pfeil angezeigt. Das System sendet das Geräte-Token zurück an Ihre App, indem es die Methode application: didRegisterForRemoteNotificationsWithDeviceToken: delegate aufruft. Nach Erhalt des Tokens muss Ihre App (innerhalb der Delegate-Methode) sie entweder im binären oder im hexadezimalen Format an Ihren Provider weiterleiten. Ihr Anbieter kann ohne dieses Token keine Benachrichtigungen an das Gerät senden. Weitere Informationen finden Sie unter Registrieren von Remote-Benachrichtigungen beim Konfigurieren der Remote-Benachrichtigungsunterstützung.





apple-push-notifications