Ändert sich das Token des Push-Benachrichtigungsgeräts nach seiner Erstellung jemals?
Beispiel, wenn die App aktualisiert wird? oder in jedem anderen Fall kann es sich ändern?
Ändert sich das Token des Push-Benachrichtigungsgeräts nach seiner Erstellung jemals?
Beispiel, wenn die App aktualisiert wird? oder in jedem anderen Fall kann es sich ändern?
Antworten:
Aus [Apple-Dokumentation ApplePushService] 2
quelle
Die offizielle Dokumentation von Apple ist in diesem Punkt unklar. Was ich beobachtet habe, ist Folgendes: Das Token ist für ein bestimmtes Gerät, eine bestimmte Anwendung und eine bestimmte Domäne (Produktion vs. Sandbox) unveränderlich. Ich glaube, dass dies wahr bleiben muss, damit das System zuverlässig funktioniert. Stellen Sie sich die Situation vor, in der ein Anwendungsupdate ein neues APN-Token auslöst. Was würde passieren, wenn ich die beste neue Twitter-ähnliche App mit aktivierten Benachrichtigungen verwenden würde, wenn ich meine App über iTunes aktualisiere? Sollte ich die Erwartung haben, dass weiterhin Benachrichtigungen gesendet werden, obwohl ich die Anwendungen nicht ausgeführt habe, seit ich das Update auf mein Gerät "synchronisiert" habe? Das Ändern der Anwendung kann sich nicht auf das APN-System auswirken, da das Betriebssystem in Ihrem Namen Benachrichtigungen erhalten kann, obwohl Sie die aktualisierte App nicht ausgeführt haben.
Um es klar auszudrücken, gibt Apple an: "Eine Anwendung sollte sich bei jedem Start [bei APN-Servern] registrieren und ihrem Anbieter das aktuelle Token geben." Ich stimme voll und ganz zu; Dies schützt Ihre Anwendung vor schlechten Annahmen oder ungewöhnlichen Situationen.
Eine der Antworten auf Sind Push-Benachrichtigungstoken für alle Apps eines einzelnen Geräts eindeutig? gibt an, dass Gerätetoken pro "Betriebssysteminstallation" eindeutig sind; und dass das Wiederherstellen von der Sicherung auf einem Gerät das Token beibehalten würde, aber das Löschen eines Geräts dazu führt, dass es ein neues Token erhält. Dies würde völlig im Einklang mit Apples Absichten eines nahtlosen Betriebs und Datenschutzes stehen: Das Löschen eines Geräts ist so schwerwiegend, dass möglicherweise eine neue Zuordnung erforderlich ist, aber ein Benutzer, der ein Image nach einem Betriebssystem-Update wiederherstellt, möchte seine vorhandenen Benachrichtigungen beibehalten. Wenn ich mich an das letzte iOS5-Update auf meinem iPad erinnere, habe ich nach dem Upgrade das letzte Backup wiederhergestellt, sodass die Konsistenz meines Benachrichtigungstokens erhalten geblieben wäre. [Bearbeiten: Wiederherstellen eines Backups auf einem anderen Gerät dupliziert das Token NICHT.]
Vorbehalt: Ich habe keine definitiven Kenntnisse zu diesem Thema, nur einige vernünftige Erfahrungen in der Arbeit mit APN (als Drittentwickler). Wie immer ist es am besten, Ihre Annahmen zu überprüfen.
Update (Juni 2012):
Ich hatte kürzlich die Gelegenheit, mit Apple-Ingenieuren zu sprechen und einige reale Tests durchzuführen, und ich wollte die Ergebnisse präsentieren:
Um vollständig zu sein, wenn ich über die Rückgabe eines APN-Tokens spreche, gehe ich vom Kontext einer einzelnen Bundle-ID / Anwendung aus.
Zunächst sagten die Apple-Ingenieure, dass es nicht möglich sein sollte, dass zwei Geräte denselben APN zurückgeben. Ungeachtet der folgenden Kommentare konnte ich keinen Umstand feststellen, unter dem dies fehlschlägt.
Zweitens ist hier die Upgrade-Testsequenz und die Ergebnisse:
Beginnen Sie mit iOS4, das auf dem iPhone4 installiert ist. Sicherungsgerät in iTunes
Upgrade auf iOS5
Aus einem früheren Test weiß ich, dass das APN-Token jetzt anders ist
Wiederherstellen der Sicherung auf dem Gerät
Das APN-Token entspricht jetzt Schritt 1.
IOS zurücksetzen (Gerät bereinigen)
Das APN-Token ändert sich
Sichern Sie ein anderes Telefon in iTunes und stellen Sie das Backup auf dem Testgerät wieder her. Im Grunde stelle ich das "falsche" Backup wieder her, als würde ich das Telefon wechseln.
Das APN-Token ändert sich erneut. Außerdem ist es eindeutig und stimmt nicht mit den Token überein, weder mit dem ursprünglichen Token noch mit dem "geklonten" Token.
Stellen Sie die "richtige" Sicherung auf dem Gerät wieder her.
Das APN-Token entspricht jetzt Schritt 1.
Zuletzt habe ich das Telefon auf iOS6 (Beta2) aktualisiert, mein Backup wiederhergestellt und erneut getestet. Wie erwartet stimmte das Token weiterhin mit dem Token in Schritt 1 überein.
An diesem Punkt bin ich ziemlich sicher, dass APN-Token nicht zwischen verschiedenen Geräten dupliziert werden können. Vielleicht ist dies in früheren Versionen von iOS als Fehler aufgetreten, aber ich bin zuversichtlich, dass iOS5 (und vermutlich iOS6) APN-Token korrekt verarbeiten.
Update (August 2012)
Ich habe gerade festgestellt, dass ich dies nicht hinzugefügt habe: Gerätetoken werden sich ändern. Einer der Apple-Entwickler teilte mir mit, dass Token tatsächlich ablaufen (nach 2 Jahren, glaube ich). Für viele Zwecke ist dies lang genug, um als unveränderlich angesehen werden zu können.
[Ich mache mir keine Sorgen, wenn ich meine Testskripte alle zwei Jahre mit neuen Token aktualisieren muss, zumal ich jedes Jahr das Telefon wechsle.]
quelle
Ich habe es gerade mit iOS9- und APN-Push-Token-Änderungen getestet, wenn ich eine App neu installiere .
quelle
JA , Gerätetoken können sich ändern.
Jedes Mal, wenn Ihre App ein Token erhält, sollte es dieses speichern. Immer dann, wenn ein neues Token empfangen wird (was wird passieren, schließlich), vergleichen Sie die neuen Token an den gespeicherten Token und, wenn sie verschieden sind:
nil
)In der Praxis ist der letzte Schritt höchstwahrscheinlich nicht trivial. Wenn Sie beispielsweise einen Dienst haben, der Wetterwarnungen an ein Gerätetoken sendet, basierend auf der Postleitzahl, die das Gerät abonniert hat, müssen Sie das
old_token
und dasnew_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 über eine Funktion
UPDATE
für dieses Token verfügen . Um nicht für diese bauen zu bauen für falsch geliefert und nicht gelieferten Benachrichtigungen.quelle
Das Gerätetoken ändert sich von iOS 8 und höher
Bitte beachten Sie den Text unten auf der Apple-Website. Registrieren, Planen und Behandeln von Benutzerbenachrichtigungen
quelle
Ich denke, es ist erwähnenswert, da sich niemand darum gekümmert hat, dass sich das Token ändert, nachdem Sie angerufen haben
unregisterForRemoteNotifications
. Wenn Sie dasregisterForRemoteNotifications
nächste Mal anrufen, ist das Token anders. Ich habe in den Apple-Dokumenten keine Bestätigung dafür gefunden, aber ich habe selbst ein solches Verhalten beobachtet. Bitte denken Sie daranquelle
Es 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 Sie erhalten einfach den registrierten Anruf, zu welchem Zeitpunkt Sie das neue Token annehmen sollten).
Apple garantiert jedoch nicht, dass es sich nie ändert (daher wird es in der Dokumentation nie erwähnt). Sie programmieren besser für das Schlimmste und gehen davon aus, dass es sich eines Tages ändern kann. Wenn Sie regelmäßig ein Token an Ihren Server senden, können Sie Token entfernen, die seit einiger Zeit nicht mehr registriert sind und wahrscheinlich Ihre App vor einiger Zeit deinstalliert haben oder das Interesse verloren haben (und in der Dokumentation wird dies als gewünschtes Verhalten angegeben!).
quelle
Von - Apple Docs
Zusätzlich:
quelle
Links werden mit Apple schnell obsolet! also zitiere ich, was jetzt ganz klar zu sein scheint:
Aus dieser Anleitung
quelle
Als Verweis auf Apple Push-Benachrichtigungsmaterial
Das Geräte-Token ist Ihr Schlüssel zum Senden von Push-Benachrichtigungen an Ihre App auf einem bestimmten Gerät. Gerätetoken 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 können, gelangen Remote-Benachrichtigungen möglicherweise nicht zum Gerät des Benutzers. Gerätetoken ändern sich immer, wenn der Benutzer Sicherungsdaten auf einem neuen Gerät oder Computer wiederherstellt oder das Betriebssystem neu installiert. Bei der Migration von Daten auf ein neues Gerät oder einen neuen Computer muss der Benutzer Ihre App einmal starten, bevor Remote-Benachrichtigungen an dieses Gerät gesendet werden können.
Zwischenspeichern Sie niemals ein Geräte-Token. Holen Sie sich das Token immer vom System, wenn Sie es benötigen. Wenn sich Ihre App zuvor für Remote-Benachrichtigungen registriert hat, verursacht das erneute Aufrufen der Methode registerForRemoteNotifications keinen zusätzlichen Aufwand, und iOS gibt das vorhandene Gerätetoken sofort an Ihren App-Delegaten zurück. Darüber hinaus ruft iOS Ihre Delegate-Methode jedes Mal auf, wenn sich das Gerätetoken ändert, nicht nur als Reaktion auf die Registrierung oder erneute Registrierung Ihrer App.
quelle
Nach diesem Link das Gerät Token
quelle
Ja , das kann sich ändern. Idealerweise erhalten wir immer dann ein Token über die Rückrufmethode
Die App sollte das Token auf dem Remote-Server registrieren / aktualisieren. Dadurch wird sichergestellt, dass das Token auf dem APNS und Ihrem Server synchron bleibt.
Wie pro Apple - Dokumentation ,
quelle
Das Geräte-Token-Relay bei der Installation der App.
Es bedeutet , dass , wenn Sie die Anwendung neu installieren, es ändert sich ; es passt nicht zusammen, wenn Sie es von einem Backup, einem iOS-Upgrade ecc .. tun.
Der richtige Weg, um Probleme zu vermeiden, besteht darin,
NSPAppDelegate
bei jedem Anwendungsstart die in der Methode angegebene zu verwendendidRegisterForRemoteNotificationsWithDeviceToken
quelle