1

Unser Projekt verfügt derzeit über ein Knoten-jS-Backend und wir möchten Push-Benachrichtigungen für iOS implementieren. Wir haben einige Nachforschungen angestellt und herausgefunden, dass wir die Tokens, die APN uns in unserer Datenbank gibt, speichern müssen, um Push-Benachrichtigungen an bestimmte Geräte zu senden. Kann jemand dies bestätigen oder gibt es eine bessere Möglichkeit, Benachrichtigungen zu senden?Token für Push-Benachrichtigungen speichern

Zweitens habe ich auch festgestellt, dass, wenn Geräte durch Software-Updates gehen, dass ihr Token ändert, dies bedeutet, dass wir die Möglichkeit haben müssen, das Token in unserer DB zu aktualisieren, weil es sich oft ändert. Das ist auch ziemlich wichtig. Gibt es auch andere Male, dass sich das Token ändern könnte?

Schließlich, gibt es irgendwelche guten Bibliotheken in Knoten zum Senden von Push-Benachrichtigungen?

Vielen Dank im Voraus!

Antwort

2

Sie müssen die Benachrichtigung accessToken an den Server senden, die gleiche Adresse für die Zustellung der Benachrichtigung. Sie müssen sich keine Sorgen über die Unterschiede im AccessStoken machen, da Sie es bei jeder Anmeldung senden müssen, damit der neue aktualisierte AccessSocen auch an den Server angehängt wird. Sie müssen sich in Ihrem Appdelegate für die Remote-Benachrichtigung registrieren und später das gespeicherte Token senden in nsuserdefault zum Server in der Anmelde-API.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 


    let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) 
     UIApplication.sharedApplication().registerUserNotificationSettings(settings) 
    UIApplication.sharedApplication().registerForRemoteNotifications() 
    return true 
} 

//Called if successfully registered for APNS. 
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    // let deviceTokenString = NSString(format: "%@", deviceToken) as String 

    var tokenStr = deviceToken.description 
    tokenStr = tokenStr.stringByReplacingOccurrencesOfString("<", withString: "", options: [], range: nil) 
    tokenStr = tokenStr.stringByReplacingOccurrencesOfString(">", withString: "", options: [], range: nil) 
    tokenStr = tokenStr.stringByReplacingOccurrencesOfString(" ", withString: "", options: [], range: nil) 
    print(deviceToken.description) 
    print(tokenStr) 
    //save the token in NSUserDefaults 
    NSUserDefaults.standardUserDefaults().setObject(deviceTokenString, forKey: "deviceToken") 


} 

//Called if unable to register for APNS. 
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { 

    print(error) 

} 

Reference Apple's Documentation

Das Gerät Token ist Ihr Schlüssel Push-Benachrichtigungen, um Ihre Anwendung auf einem bestimmten Gerät zu senden. Geräte-Tokens können sich ändern, sodass Ihre App bei jedem Start registriert werden muss und das empfangene Token an Ihren Server zurückgeben muss . Wenn Sie das Geräte-Token nicht aktualisieren können, werden die Remote-Benachrichtigungen möglicherweise nicht auf das Gerät des Benutzers geleitet. Gerät Tokens ändern sich immer, wenn der Benutzer Sicherungsdaten auf einem neuen Gerät oder Computer wiederherstellt oder das Betriebssystem neu installiert. Wenn Sie Daten auf ein neues Gerät oder einen Computer migrieren, muss der Benutzer Ihre App einmal starten , bevor Remote-Benachrichtigungen an dieses Gerät übermittelt werden können.

+0

Danke für diese Antwort, aber ich denke, ich frage mich immer noch, ob ich Benachrichtigungen zwischen zwei Personen senden möchte, kann ich noch in meiner Datenbank speichern? Danke –

+0

Ja, Sie müssen die Datenbank pflegen, auch wenn es zwischen zwei Personen, accesstoken ändert, wenn der Benutzer App seit iOS 9 neu installiert oder stellt ihr Telefon und mehr eine Person kann mehrere Geräte haben. Also, Sie müssen auf jeden Fall die Datenbank pflegen. –