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

Posted

技术标签:

【中文标题】从 iOS 6 更新到 iOS 7 时 identifierForVendor 会发生变化【英文标题】:Will identifierForVendor change when updating from iOS6 to iOS7 【发布时间】:2013-09-20 08:19:18 【问题描述】:

我们目前使用的是 ios6 中引入的identifierForVendor。现在 iOS7 发布了,我想知道这个标识符在更新过程之后是否会在我的应用程序中保持不变。

如果我用 iOS7 恢复我的设备,那么它显然会改变,因为这将是一个新的开始。

通过 iTunes / OTA 更新怎么样?

【问题讨论】:

阅读官方参考资料可能会有所帮助。 我一直在读它。只有当您卸载同一供应商的最后一个应用程序时,它才会发生变化。但是,我想知道苹果最终是否会通过 iOS 更新来改变它...... ***.com/questions/30510921/… 我遇到了这个问题 【参考方案1】:

我还用一个只显示identifierForVendor 的小应用测试了这种行为,并且在从 iOS6 更新到 iOS7 之前/之后保持不变。

同样重要的是要知道identifierForVendor 与苹果开发者帐户无关,而是与应用的捆绑标识符相关。

因此,如果您有 2 个开发者帐户并在每个帐户上创建 1 个应用,使用捆绑标识符 com.company.xxx,它们将拥有相同的 identifierForVendor,因为它们具有共同的 com.company.

它会根据UIDevice Class Reference中提到的条件而改变。

更新后advertisingIdentifier 确实可能会发生变化。不过没有测试。

【讨论】:

您使用什么样的 Provisioning Profile 进行测试?开发还是分销?企业或应用商店?你的 BundleID 有多少个组件? 对于测试,我一直在使用开发配置文件。由于identifierForVendor 不依赖于帐户类型(应用商店或企业),因此不应对其产生影响。 BundleID 有 3 个组件,例如 com.company.myapp 某些东西肯定会影响它,因为在升级到 iOS 7(在多个设备上)后,我的测试清楚地显示了不同的 identifierForVendor。看来我得做更多的测试了.. 关于 identifierForVendor 的很好的解释。为你+1。 :)【参考方案2】:

我做了一些测试(参见Under what conditions is Apple's 'advertisingIdentifier' reset?),似乎是的,identifierForVendor 在更新到 iOS 7 时确实发生了变化。

至少在我更新的 iPhone 4S 和 iPad mini 上发生了这种情况(前一个带有 iTunes,iPad 无线)。

但是,我不知道是否所有用户/设备和应用程序/配置文件都是这种情况。

更新

Apple writes this,这可能解释了为什么标识符对我来说发生了变化,但对 Kilian 却没有:

比较 [[[UIDevice currentDevice] identifierForVendor] UUIDString] 在多个企业应用程序或通过安装的应用程序上 Xcode(不是 App Store),其中 bundleID 仅在最后一个不同 组件,将产生相同的字符串。如果 bundleID 有 3 或 更少的组件,这种行为在 iOS 6 中没有改变。

这是由于 iOS 6 和 iOS 7 之间的行为发生了变化,其中 -[UIDevice identifierForVendor] 如果没有供应商 ID,则考虑 bundleID。供应商 ID 仅分配给应用程序上的应用程序 商店。

【讨论】:

我从你的帖子中得到了一些想法。为你 +1 :)【参考方案3】:

当您删除应用程序并重新安装它时,供应商标识符也会发生变化!

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

仅供参考!

【讨论】:

这似乎不是真的,至少现在不是了。从设备中删除我帐户中的所有应用程序并重新安装;得到相同的 UUID。【参考方案4】:

是的,供应商 ID 将更改! (至少如果您从 iOS6 更新到 iOS7)

苹果取出mac地址的好主意... 更厉害的是……谁对此负责,谁就应该获得荣誉勋章

【讨论】:

以上是关于从 iOS 6 更新到 iOS 7 时 identifierForVendor 会发生变化的主要内容,如果未能解决你的问题,请参考以下文章

我的应用从 iOS 6 到 iOS 7 标签问题

从 iOS 13.6.1 升级到 iOS 14 时应用行为发生变化

在 iOS 7 下运行我的 iOS 6 应用程序时,为啥我的视图上没有正确显示阴影?

如何使用 TouchAction 滚动 Appium 1.7.1

我可以使用 Xcode 4.6.3 分析 iOS 7 设备吗?

Xcode 8 Beta 6 不支持 iOS 10 Beta 7 sdk