2017-10-18 1 views
0

Scheint wie alle anderen Informationen, die ich fand, war veraltet. Betrachten Sie einen Benutzer, der iPhone und iPad hat und die gleiche App auf jedem Gerät installiert ist. Wenn Sie sich zum ersten Mal von jedem Gerät aus anmelden, wird das eindeutige Geräte-Token in der Datenbank gespeichert, damit es für zukünftige Benachrichtigungen verwendet werden kann. Unten ist das Verfahren I-Device-Token in AppDelegate zu bekommen verwenden:APNs Gerät Token Update bei Verwendung mehrerer Geräte durch den gleichen Benutzer

- (void)application:(UIApplication*)application 
didRegisterForRemoteNotificationsWithDeviceToken(NSData*)deviceToken 
    { 
    [[NSUserDefaults standardUserDefaults] setValue:deviceToken forKey:@"token"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 

... so dass ich später es beim Login-Prozess verwenden kann.

Jetzt, wenn aus irgendeinem Grund die App deinstalliert und erneut installiert wird, oder nach iOS-Update, das Gerät Token wird anders sein und ich muss Datensätze in der Datenbank aktualisieren.

Wenn ich mit nur einem Gerät pro Benutzer zu tun hatte, würde ich nach Benutzer-ID gehen, den vorherigen Datensatz löschen und den neuen einfügen. Aber bei mehreren Geräten ... wie identifiziere ich, welcher Datenbankeintrag aktualisiert werden soll, welcher Token wird nicht mehr benutzt?

Gibt es eine eindeutige Geräte-ID, die sich NIE ändert ???

Antwort

0

Jedes Mal, wenn die App gestartet wird, wird das aktualisierte Geräte-Token mit derselben Methode geliefert, mit der Sie das Geräte-Token speichern. Sie können also nur eine Logik verwenden, um das Token zu speichern und zu aktualisieren.

Sie haben das aktuelle Token in den UserDefaults gespeichert, löschen Sie also dieses Token zuerst aus der Datenbank und aktualisieren Sie dann das neue Token. Sie können dies auf dieselbe Weise tun, in der Sie das Token speichern. Dazu müssen Sie jedes Mal prüfen, ob das aktuelle Geräte-Token in der Datenbank ist. Wenn ja, löschen Sie es und aktualisieren Sie es für die Benutzer-ID. Wenn nein, speichern Sie diesen in der Datenbank für die Benutzer-ID.

+0

Nein. Es funktioniert nicht so, wenn ich die App deinstalliere und dann neu installiere. UserDefaults wird leer sein. Aber das ältere Token befindet sich noch in der Datenbank. – ekashking

+0

Sie können versuchen, alle Token zu löschen, wenn der Benutzer zum ersten Mal angemeldet ist, und das Token eines anderen Geräts sollte bei jedem Start der App aktualisiert werden. Es gibt zwar einen Haken, aber für die kurze Zeit, in der die Geräte-Tokens gelöscht werden und das Gerät noch aktiv ist, können Sie die Benachrichtigungen in diesem kurzen Zeitraum nicht senden. –

Verwandte Themen