2013-02-13 2 views
19

Ich habe ein ungewöhnliches Szenario festgestellt, in dem ein Benutzer weiterhin Benachrichtigungen erhält, wenn meine App gelöscht und anschließend neu installiert wurde. Das Szenario ist wie folgt:Verhalten von iOS-Push-Benachrichtigungen, wenn App gelöscht und anschließend erneut installiert wird

  • Benutzer die App aus dem Appstore
  • Benutzer an unsere App installiert und wir registrieren sie für Benachrichtigungen
  • Nutzer die App aus dem Gerät löscht
  • Benutzer neu installiert die App aus dem Appstore empfängt
  • Benutzer eine Benachrichtigung, obwohl sie die App noch nicht begonnen haben, nach oben, angemeldet, etc

Mein Verständnis der APNs-Architektur bestand darin, dass die App, sobald sie von Ihrem Gerät gelöscht wurde, vom Betriebssystem selbst aus den APNs entfernt wurde. Eine Neuinstallation der App würde Benachrichtigungen erst dann wieder aktivieren, wenn Sie "registerForRemoteNotificationTypes" aufgerufen haben. Wenn also eine Notiz mit dem alten Token an das Gerät gesendet wurde, würden APNs diese Nachricht nicht übermitteln, da die oben genannte Methode nicht aufgerufen wurde.

Ist das nicht korrekt?

+1

Meiner Erfahrung nach kann das Token nach der Neuinstallation gleich bleiben. – Eduardo

Antwort

20

Das Token bleibt gleich. Das gilt für alle Anwendungen auf dem Gerät. Es ändert sich nur, wenn Sie die Betriebssystemversion ändern. Das erklärt jedoch immer noch nicht das seltsame Verhalten, auf das Sie gestoßen sind.

Ich glaube, erst nachdem Apple erkannt hat, dass die Anwendung vom Gerät deinstalliert wurde (was normalerweise passiert, wenn Sie eine Benachrichtigung an die App auf einem bestimmten Gerät senden, nachdem das Gerät es deinstalliert hat), wird die App nicht registriert. Wenn keine Benachrichtigungen an die App auf dem Gerät gesendet wurden, die die App zwischen dem Zeitpunkt der Deinstallation und dem Zeitpunkt der Neuinstallation deinstalliert hat, weiß Apple nicht, dass das Gerät die App deinstalliert hat und daher weiterhin für APNS registriert ist.

Das Verhalten des Feedback-Service unterstützt meine Theorie - wenn Sie die App deinstallieren und den Feedback-Service aufrufen, erhalten Sie nicht das Geräte-Token des Geräts, das die App deinstalliert hat. Erst nachdem Sie versucht haben, eine Benachrichtigung an dieses Gerät zu senden, erkennt Apple die Deinstallation und gibt dieses Geräte-Token im Feedback-Dienst zurück.

Eine letzte Sache, die ich hinzufügen sollte - wenn die deinstallierte App die letzte auf dem Gerät ist, das für Push-Benachrichtigungen registriert wurde, wird der APN-Dienst nie wissen, dass die App deinstalliert wurde und daher immer noch für APN registriert wird nach der Neuinstallation.

+0

Ja, nach ein paar Tests vermute ich, dass dies der Fall ist. Ich nehme an, dass dies darauf hindeutet, dass Sie den Feedback-Service mehrmals am Tag überprüfen, um Geräte-Token zu entfernen. Nicht sicher, ich folge, was Sie im letzten Absatz meinen. – Vickram

+0

@Vjayus Zuerst würde die Überprüfung des Feedback-Service Ihr Problem nicht lösen. Wenn Sie dem Gerät keine Benachrichtigung senden, während die App deinstalliert wird, weiß der APN-Dienst nicht, dass das Gerät deinstalliert wurde. Wenn Sie den Feedback-Dienst aufrufen, ändert sich dies nicht. Sie müssen den Feedback-Service nicht mehrmals am Tag anrufen, es sei denn, Sie senden jeden Tag mehrere Nachrichten an die gleichen Geräte. – Eran

+0

@Vjayus Mein letzter Absatz bezieht sich auf etwas, das Apple in der APN-Dokumentation angibt.Wenn nach der Deinstallation der Anwendung auf Ihrem Gerät keine Anwendungen installiert sind, die für Push-Benachrichtigungen registriert sind, erkennt der APN-Dienst niemals, dass Ihre App auf dem Gerät deinstalliert wurde. Dies ist nicht sehr wahrscheinlich, da sich viele beliebte Anwendungen für Push-Benachrichtigungen registrieren. – Eran

9

Wenn Sie die App löschen, wird sie vom Betriebssystem nicht vom APNS "gelöscht". Sie müssen eine Benachrichtigung an ein Gerät senden, das die App gelöscht hat, um sie "abzumelden". Dies kann einige Versuche von APNS erfordern, bis es herausfindet, dass die App gelöscht wurde.