NSString *identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
上面的代码在我的两个应用程序中的同一部手机上给出了两个不同的标识符 - 不同的包 ID 但在我的 Apple 帐户上创建了两个应用程序 ID 和两个开发配置文件。
我的理解是,如果团队 ID 相同,则供应商的标识符在这两个应用程序中应该相同。错误在哪里?我不明白什么?
最佳答案
我现在正在处理同样的问题。 “答案”是 identifierForVendor 根据其在 Apple 文档中的预期设计被破坏:
The bundle ID is assumed to be in reverse-DNS format, and the first two components are used to generate a vendor ID. For example, com.example.app1 and com.example.app2 would appear to have the same vendor ID.
实际情况是,identifierForVendor 仅对于使用相同配置文件和签名证书的应用程序是相同的。例如,我的企业环境中有多个应用程序,所有这些应用程序都是 com.mycompany..
identifierForVendor 对于使用 bundleID com.mycompany.app1.* 及其配置文件的应用程序是相同的,但是 com.mycompany.app2 使用相同的签名证书但不同的配置文件会产生不同的 identifierForVendor 值。
编辑:这只发生在 iOS7 中,但在 iOS6 中工作正常。我昨天对此进行了一段时间的测试,并且可以在 7 天内重现该问题,但在 6 天内我得到了预期的结果。
EDIT2:Apple 已将目标帖子移到 identifierForVendor 上。他们显然确定了他们的算法问题,并且没有解决问题,而是通过文档更改更改了 iOS 版本之间标识符的功能。更新的文档链接如下。 SMH.
关于iphone - 供应商标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15528978/