2016-06-04 9 views
0

Okay, wenn ein Benutzer eine Taste im App-Intro drückt, können sich damit Benachrichtigungen registrieren. Sobald dies erledigt ist, versuche ich das Token zu speichern, das an meinen Server gesendet wird und es erscheint leer:Geräte-Token wird nicht gespeichert

Dies ist der Code in meinem Intro.

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


var myDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
       var tokenString: String = myDelegate.tokenString1 

       tokenString = tokenString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")) 
       tokenString = tokenString.stringByReplacingOccurrencesOfString(" ", withString: "") 
       NSUserDefaults.standardUserDefaults().setObject(tokenString, forKey: "notification") 
       NSUserDefaults.standardUserDefaults().synchronize() 

Dies ist der Code in meinem AppDelegate:

var tokenString1 = "" 
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
     var tokenString: String = deviceToken.description 
     tokenString = tokenString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")) 
     var tokenString1 = tokenString.stringByReplacingOccurrencesOfString(" ", withString: "") 
     NSUserDefaults.standardUserDefaults().setObject(tokenString1, forKey: "notification") 
     NSUserDefaults.standardUserDefaults().synchronize() 

    } 
    func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { 
     print("Failed to register:", error) 
    } 

Antwort

0

Die lokale Variable tokenString1 in didRegisterForRemoteNotificationsWithDeviceToken und die Instanz Variable tokenString1 sind ganz andere Objekte. Die lokale Variable wird bevorzugt und die Instanzvariable wird nie festgelegt.

Lösung: Entfernen Sie das Stichwort var in didRegister ...

tokenString1 = tokenString.stringByReplacingOccurrencesOfString(" ", withString: "") 

Es gibt keine Notwendigkeit, überhaupt ist das Token in Benutzereinstellungen zu speichern. Sie erhalten immer die aktuelle in der Registermethode, die Methode wird bei jedem Start der App aufgerufen.

Verwandte Themen