繁体   English   中英

ios swift - 将设备令牌保存为打印不同值的数据格式

[英]ios swift - Save device token as data format printing different values

我尝试将 devicetoken 保存到 userDefaults 以供以后使用。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
print(deviceToken) // value print as 32 bytes

 let encodedData: Data = NSKeyedArchiver.archivedData(withRootObject: deviceToken)
        UserDefaults.standard.set(encodedData , forKey: "deviceToken")


 let decoded  = UserDefaults.standard.data(forKey: "deviceToken")
print(decoded) // value print as 172 bytes
}

我不知道打印值是否正确。 如何验证? 或者如果我的存储机制是错误的。 如何保存数据以备后用?

Encoding Data to Data是多余的,直接保存token就好了

UserDefaults.standard.set(deviceToken, forKey: "deviceToken")

你可以用

print(deviceToken as NSData)

供以后使用

有什么用? 发送通知的服务器需要维护令牌,而不是客户端。

不需要使用NSKeyedArchiver ,这就是你得到错误值的原因。 为了在 UserDefaults 中保存数据(这根本不安全):

UserDefaults.standard.set(deviceToken, forKey: "kDeviceToken")

为了检索它,您应该使用:

let deviceToken = UserDefaults.standard.data(forKey: "kDeviceToken")

如果你想保护你保存的数据,我建议你使用 Keychain,参考这里: https://fluffy.es/persist-data/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM