2016-04-01 3 views
3

Ich versuche eine App zu entwickeln, um Push-Benachrichtigungen mit einem Benutzerkonto zu erhalten.IOS7,8,9 früheres Push-Benachrichtigungsverhalten erhalten

(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 

Sobald die Registrierung erfolgreich ist, ist das DeviceToken mit einem Benutzerkonto verknüpft.

Es ist ein Szenario, wenn die userA Registrierung abgeschlossen ist und deinstalliert die App, die App im Idealfall nicht die Push-Benachrichtigung von APNs erhalten, aber einem anderen userB installiert es ohne Registrierung mit dem gleichen iPhone, das iPhone wird die userA erhalten ' s Push-Benachrichtigung, da der deviceToken der gleiche wie der vorherige ist.

In der Tat sollte die userB nicht die userA Push-Benachrichtigung mit dem gleichen Gerät erhalten. Zum Glück existiert es nur in IOS7,8, aber nicht in iOS9 (iOS9 ist die Push-Berechtigung deaktiviert, bis der Benutzer die Erlaubnis erteilt)

Wie man es löst? Dank

Antwort

3

Eine Möglichkeit, dieses Problem zu handhaben ist:

1) Sobald Benutzeranmeldung Gerät für Remote-Benachrichtigung .Dieses Weise austragen Ihres Gerät tun, wird es den nächsten Satz der Mitteilung sicherzustellen, wird nicht Erreichen des Geräts, selbst wenn der Anwendungsserver es an das Gerät sendet.

Beispielcode für wie (siehe Abmeldeverfahren) zum Aufheben der Registrierung:

https://github.com/AppLozic/Applozic-iOS-SDK/blob/af7b6b1e9ebeb2d7a7679a887e5d3a17b1b6b4ca/sample-with-framework/Applozic/Applozic/Services/ALRegisterUserClientService.m

2) Registrieren Sie Ihr Gerät für Remote-Benachrichtigung wieder und die neuen Token-Anwendungsserver senden. Für zusätzliche Überprüfung wird der Anwendungsserver folgendes tun.

i) Überprüfen Sie, ob das Geräte-Token, das an den Anwendungsserver gesendet wurde, wenn es mit einem anderen Benutzer verknüpft ist (z. B. userA), dieses Token zurücksetzen kann.

ii) Gerät Token speichern und mit dem aktuellen Benutzer verknüpft (Say userB).

Hoffe, das wird helfen.

+0

So nach, vorherige Registrierungen werden annulliert, wenn ANY bei der Anmeldung! – djay

+0

@Divjyot ja ist es. – Adarsh

+0

Ich verstehe die 1 & 2-Lösungen von @Adarsh, aber ein weiteres Szenario, sobald das UserB die App nicht startet, dann würde das DeviceToken nicht auf dem Anwendungsserver aktualisieren. Die APNs werden also die BenutzerA-Benachrichtigung an das Gerät des BenutzersB senden. Wenn das UserB die App nicht startet, wie kann ich das deviceToken auf dem Server entfernen? antworten die APNs auf einen Rückruf an den Server, um mich wissen zu lassen, dass die App entfernt/neu installiert wurde? – onebidman