iOS identifierForVendor 是不是可以复制?

Posted

技术标签:

【中文标题】iOS identifierForVendor 是不是可以复制?【英文标题】:is it possible for iOS identifierForVendor to be duplicated?iOS identifierForVendor 是否可以复制? 【发布时间】:2020-08-19 01:19:18 【问题描述】:

每次我卸载和安装我的应用程序时,都会生成一个新的identifierForVendor。 我发现这是 Apple 正在进行的issue。

我的后续问题是,如果两个或多个设备继续卸载/重新安装,是否有可能拥有相同的identifierForVendor

【问题讨论】:

【参考方案1】:

理论上可以,但对于实际应用,您不必担心这一点。

identifierForVendor 属于 UUID 类型 - this wiki page 有一个关于一般 UUID 的冲突概率的部分,不仅在 ios 上。简而言之,为了有 50% 的碰撞几率,您需要生成 ~2.71*10^18 标识符。就是这样

相当于在大约 85 年内每秒生成 10 亿个 UUID。包含这么多 UUID 的文件(每个 UUID 16 个字节)大约为 45 EB。

另外,我不会说这是一个“问题”,而是 Apple 做出的决定 - 在 documentation 他们明确指出

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

【讨论】:

以上是关于iOS identifierForVendor 是不是可以复制?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios5中使用identifierForVendor。?

iOS 6 UDID - identifierForVendor 与 identifier For Advertising 相比有啥优势?

使用iTunes恢复备份安装相同应用程序的两个iOS设备的identifierForVendor可以相同吗?

Mac App Store App 和 identifierForVendor

调试中的 identifierForVendor 行为

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