【问题标题】:does app give different device token on re-installing again应用程序是否在重新安装时提供不同的设备令牌
【发布时间】:2016-02-26 14:48:34
【问题描述】:

我记得,重新安装 iPhone 时,设备令牌永远不会改变。

但是这些天来(尤其是在 iOS 9 上),我注意到如果我重新安装应用程序,设备令牌会发生变化。

这个设置是由 Apple 完成的还是我遗漏了什么?

我必须知道这一点,因为这对我来说非常重要,因为我正在为特定用户发送推送以通知他们的更新。

还有很多不需要的设备令牌。

注意

我在 App Delegate 的 webservice 下面调用

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    // sending it to online database for my record
}

【问题讨论】:

  • 是的,我也面临同样的问题,但删除应用程序、派生数据和构建文件,然后再次安装解决了我的问题。
  • @PratikShah :我没有任何问题.. 我只是想确定这只是由 Apple 发生的,我没有做错任何事......顺便说一句,我想删除不需要的设备令牌,我必须找到一种方法......

标签: ios apple-push-notifications devicetoken


【解决方案1】:

rtfm: “对于来自同一供应商在同一设备上运行的应用程序,此属性的值是相同的。对于来自不同供应商的同一设备上的应用程序以及不同设备上的应用程序,无论供应商如何,都会返回不同的值。 "

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/#//apple_ref/occ/instp/UIDevice/identifierForVendor

【讨论】:

  • 但我的应用来自同一供应商...当我从应用商店重新安装时,它总是给我新的设备 ID...
【解决方案2】:

在 iOS9 上是的,Apple 表示每次安装您的应用程序时,设备令牌都可能会发生变化。所以最好的方法是在每次启动时重新注册设备令牌。

Here 是苹果关于更改设备令牌的文档的链接

【讨论】:

  • 正如我在问题中所说,我已经在每次打开应用程序时都在注册...我记得以前从未发生过...
  • 我认为它在 iOS 9 中是新的
【解决方案3】:

是的,每次安装应用程序时可能会更改。您需要在每次启动应用时更新 device_token。

【讨论】:

    【解决方案4】:

    您需要找到自己的方式来跟踪用户。以下是您的方法和建议的供应商标识符的问题:

    • 设备push token可以随时更改。您可以在应用程序启动期间跟踪此更改并要求服务器切换令牌,但将在旧令牌上发送的消息将丢失。
    • identifierForVendor - 唯一标识符的来源也是非常不可靠的,因为它会在很多情况下发生变化。

      当应用程序(或来自同一供应商的另一个应用程序)安装在 iOS 设备上时,此属性中的值保持不变。当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。当使用 Xcode 安装测试版本或使用 ad-hoc 分发在设备上安装应用程序时,该值也可能发生变化。因此,如果您的应用程序将此属性的值存储在任何地方,您应该优雅地处理标识符更改的情况。

    对于单个设备,您可以使用 Keychain 作为持久标识符存储的来源。您可以为用户生成新的唯一标识符(例如NSUUID)并将其存储在钥匙串中(如果尚不存在)。如果为存储的项目配置访问组并与您的所有应用程序一起重复使用 - 您将可以从用户设备上的应用程序访问存储的唯一标识符。如果配置正确,钥匙串中的项目将存储在加密的用户设备备份中,甚至会在他的新设备上恢复。

    【讨论】:

    • 此外,如果使用钥匙串,该项目将在应用程序删除和重新安装时保持不变,甚至是组中的所有应用程序。
    • @zaph 是的!当我们使用 MKStoreKit 时,这种持久性的东西给我们带来了很多痛苦,并且不明白为什么我们在重新安装应用程序后看不到正确的界面。功能已购买并处于活动状态。当我们更深入地研究他的代码时,我们发现了 Keychain 并从这种情况中吸取了关于 Keychain 如何有用的教训:)
    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多