Antwort

6

Apple sagen tatsächlich NICHT das Gerät Token lokal zu speichern. Sie rufen registerForRemoteNotifications(), wenn Sie das Geräte-Token benötigen. Von Apple:

Never cache a device token; always get the token from the system whenever you need it. If your app previously registered for remote notifications, calling the registerForRemoteNotifications method again does not incur any additional overhead, and iOS returns the existing device token to your app delegate immediately. In addition, iOS calls your delegate method any time the device token changes, not just in response to your app registering or re-registering.

Also, was Sie tun müssen, ist für Remote-Benachrichtigungen auf Start, registrieren und diese Token an den Server senden. Von Apple: Device tokens can change, so your app needs to reregister every time it is launched and pass the received token back to your server.

können Sie weitere Dokumentation finden Sie hier: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW25

+0

senden Nun, das ist ziemlich verdammt definitiv! Vielen Dank. –

+0

Kein Problem dude –

+5

Ich würde hinzufügen, dass IMO es wichtig sein kann, es zu cachen. Wenn Sie es zwischenspeichern, werden Sie wissen, ob das Betriebssystem es geändert hat (was es sehr, sehr sehr selten tut), in welchem ​​Fall dann und nur dann müssen Sie das neue an Ihren Server senden. Wenn Sie es nicht zwischenspeichern, wird das Ergebnis sein, dass Sie das Token immer jedes Mal an Ihren Server senden müssen, wenn Ihre App läuft und 99,9999999% der Zeit, die unnötig war. – Gruntcakes

0

Sicher, Sie müssen sich jedes Mal, wenn die App gestartet wird, für Push-Benachrichtigungen registrieren. Wie die Dokumentation von Apple sagt, weiß man nie, wann und warum sich das Token ändern kann/wird.

Zweitens, in der Tat können Sie etwas Code haben, um das Token im Falle eines Serverfehlers oder des Verlusts von Internet lokal zu speichern, wenn Sie versuchen, es an Ihren Server zu senden. Und diese Logik kann mit einer Verzögerung und einer maximalen Anzahl von Versuchen erneut versuchen. Aber das ist ziemlich übertrieben und nicht KISS-ähnlich.

Was Sie tun können, senden Sie es, sobald Sie es von didRegisterForPushNotification erhalten und lokal speichern und jedes Mal, wenn der Benutzer Ihrer App einen "Update-Einstellungen" Anruf sendet es gleichzeitig auch.

+0

Ich bin nicht sicher, ich das letzte Bit verstehen. Was meinst du mit den Einstellungen? –

+0

Ich meinte, wenn Sie ein Benutzerkonzept in Ihrer App haben, könnten Sie einen Anruf von Ihrer App zu Ihrem Server haben, der Benutzereinstellungen speichert/speichert. Das wäre eine gute Zeit, um auch das Gerät Token nur auf Fall – vincentroyc