identifierForVendor 是不是会在应用更新时发生变化?

Posted

技术标签:

【中文标题】identifierForVendor 是不是会在应用更新时发生变化?【英文标题】:Does identifierForVendor change on app update?identifierForVendor 是否会在应用更新时发生变化? 【发布时间】:2018-06-17 14:55:50 【问题描述】:

我听说过在 App Store 更新应用期间UIDevice.identifierForVendor 发生变化的故事。

This answer 类似于“...当从应用商店更新应用时,存在影响 identifierForVendor 计算的错误...”。在rdar://22677034查看相应的大报告。

您是否遇到过此类问题? 这是一个已经修复的错误吗?

【问题讨论】:

【参考方案1】:

根据the official documentation,简单的重新安装应该不会影响identifierForVendor

但是,如果满足条件,标识符会发生变化,这是记录在案的行为。 不要假设identifierForVendor 始终保持不变。总是存在系统错误地将更新识别为重新安装等的边缘情况。

来自上面链接的文档:

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

【讨论】:

我在 7000 名用户中遇到了大约 45 名在应用更新或系统更新期间更改了 identifierForVendor。还是不知道为什么。如果您想使用唯一的字符串,似乎将identifierForVendor 保存到钥匙串是更合适的解决方案。但在这种情况下使用identifierForVendor 或随机字符串将是相同的,因为它已经保存在钥匙串中。

以上是关于identifierForVendor 是不是会在应用更新时发生变化?的主要内容,如果未能解决你的问题,请参考以下文章

使用 identifierForVendor 加密文件是不是合适?

iOS identifierForVendor 是不是可以复制?

从 iOS 6 更新到 iOS 7 时 identifierForVendor 会发生变化

为啥“[[UIDevice currentDevice] identifierForVendor]”会导致内存泄漏?

调试中的 identifierForVendor 行为

Mac App Store App 和 identifierForVendor