swift - 设备 token 未保存

标签 swift notifications

好的,当用户按下应用程序简介中的按钮时,他们可以注册通知。完成此操作后,我尝试保存 token 以发送到我的服务器,并且它显示为空白:

这是我介绍中的代码。

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()   

这是我的应用程序委托(delegate)中的代码:

    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)
    }

最佳答案

didRegisterForRemoteNotificationsWithDeviceToken 中的local 变量tokenString1instance 变量tokenString1 分别是完全不同的物体。首选局部变量,并且永远不会设置实例变量。

解决方案:去掉didRegister ...中的关键字var

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

根本不需要将 token 保存在用户默认值中。您始终可以在注册方法中获得实际的值,每次应用程序启动时都会调用该方法。

关于swift - 设备 token 未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634037/

相关文章:

ios - 快速调整 sdwebImage 的大小

ios - Swift3 iOS -Firebase FIREmailPasswordAuthProvider 不工作

arrays - 如何使用 Swift 将 json 数据添加到数组或类似数据

Cocoa:以编程方式设置 NSUserNotification 类型

javascript - 是否可以仅使用 jquery/ajax 构建推送通知系统?

ios - 在 XCode 6 中构建 .framework

ios - 解析 Apns 负载

django - django 基于日期的自动电子邮件通知

python - Django 未读消息系统

iphone - Urban Airship 通知开/关