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
}
不知道打印值对不对。
如何验证呢?或者如果我的存储机制是错误的。我如何保存数据供以后使用?
将Data
编码成Data
是多余的,直接保存token就可以了
UserDefaults.standard.set(deviceToken, forKey: "deviceToken")
你可以用
显示字节
print(deviceToken as NSData)
for later use
有什么用?发送通知的服务器需要维护令牌而不是客户端。
不需要使用NSKeyedArchiver
,这是你得到错误值的原因。为了在 UserDefaults 中保存数据(这根本不安全):
UserDefaults.standard.set(deviceToken, forKey: "kDeviceToken")
为了检索它,您应该使用:
let deviceToken = UserDefaults.standard.data(forKey: "kDeviceToken")
如果您想保护您正在保存的数据,我建议您使用钥匙串,参考此处:https://fluffy.es/persist-data/
我尝试将 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
}
不知道打印值对不对。 如何验证呢?或者如果我的存储机制是错误的。我如何保存数据供以后使用?
将Data
编码成Data
是多余的,直接保存token就可以了
UserDefaults.standard.set(deviceToken, forKey: "deviceToken")
你可以用
显示字节print(deviceToken as NSData)
for later use
有什么用?发送通知的服务器需要维护令牌而不是客户端。
不需要使用NSKeyedArchiver
,这是你得到错误值的原因。为了在 UserDefaults 中保存数据(这根本不安全):
UserDefaults.standard.set(deviceToken, forKey: "kDeviceToken")
为了检索它,您应该使用:
let deviceToken = UserDefaults.standard.data(forKey: "kDeviceToken")
如果您想保护您正在保存的数据,我建议您使用钥匙串,参考此处:https://fluffy.es/persist-data/