gpt4 book ai didi

ios - 如果为同一设备卸载/重新安装应用程序,设备 token 是否会更改

转载 作者:行者123 更新时间:2023-11-28 21:33:26 30 4
gpt4 key购买 nike

我收到同一个应用的多个通知..

如果它改变了如何从我们的服务器中删除旧的..

这是我在 iOS 9 设备上的观察

1.DB APPId 和 Device token 中有两个字段如果我卸载应用程序并在同一设备上再次安装它,设备 token 会发生变化..

2.我在同一台设备上测试了另一个应用即使是同一台设备,设备 token 也不同

即使我从我的数据库中删除了第一个设备 token ,我也会向同一设备收到 3 条通知……。我还是不明白为什么会有多个通知..

可能的原因是什么?

最佳答案

Device token 在以下条件下发生变化。

  • 如果用户将备份数据恢复到新设备。
  • 重新安装应用

所以我的建议是用新 token 更新服务器。

每次在 didRegisterForRemoteNotificationsWithDeviceToken 中启动应用程序时,您都必须调用 api,如果发生变化,它会更新设备 token 。

在您的数据库中创建另外两个字段作为 device tokenAPPId 因此,更新 device token 相对于 APPId.

从设备钥匙串(keychain)中获取 APPId 或唯一设备 ID,并使用 device token 将其发送到您的服务器,因此,在服务器更新 device token 时使用关于 APPId

keychain value 在以下情况下永远不会改变。

要获取钥匙串(keychain)值,请遵循 Keychain

// MARK: - Push Notification Delegate Methods.
func application(_ application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

//send this device token to server

let token = String(data: deviceToken.base64EncodedData(), encoding: .utf8)?.trimmingCharacters(in: CharacterSet.whitespaces).trimmingCharacters(in: CharacterSet(charactersIn: "<>"))

//Save device to UserDefaults
let defaults = UserDefaults.standard
defaults.set(token, forKey: "DeviceToken")
defaults.synchronize()

print("token is ---\(token)")

print("AppId ----\(getUniqueDeviceIdentifierAsString)")

//Send token value and AppId to server

}

var getUniqueDeviceIdentifierAsString : String {

let appname = Bundle.main.infoDictionary![kCFBundleNameKey as String] as! String

var strApplicationUUID: String? = KeychainWrapper.standard.string(forKey: appname)
if strApplicationUUID == nil {
strApplicationUUID = UIDevice.current.identifierForVendor?.uuidString
_ = KeychainWrapper.standard.set(strApplicationUUID!, forKey: appname)
}

return strApplicationUUID!
}

关于ios - 如果为同一设备卸载/重新安装应用程序,设备 token 是否会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34891838/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com