iOS 6升级到iOS 7后,identifierForVendor会发生改变吗?

3

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

如果我使用iOS7恢复设备,则显然会更改,因为这将是一个全新的开始。

通过iTunes / OTA进行更新呢?


阅读官方参考文档可能会有所帮助。 - Desdenova
我一直在阅读它。它只应该在卸载同一供应商的最后一个应用程序时更改。但是,我想知道苹果是否最终会在iOS更新中更改它... - Kilian Schefer
我遇到了这个问题:https://dev59.com/4l0a5IYBdhLWcg3wS268 - Esqarrouth
4个回答

10

我还用一个小应用测试了这种行为,它只显示identifierForVendor。在从iOS6升级到iOS7之前/之后,它仍然保持不变。

另外需要知道的是,identifierForVendor与苹果开发者帐户无关,而与应用程序的束标识符相关。

如果您有两个开发者帐户,并在每个帐户上创建一个应用程序,使用束标识符com.company.xxx,它们将具有相同的identifierForVendor,因为它们有com.company.的共同点。

它将根据UIDevice Class参考文献中提到的条件进行更改。

advertisingIdentifier在更新后可能确实会更改。虽然没有测试过。


你在测试中使用了什么样的Provisioning Profile?开发或发布?企业还是应用商店?你的Bundle ID有多少个组件? - Andreas Ley
1
为了测试,我一直在使用开发配置文件。由于identifierForVendor不依赖于帐户类型(App Store或企业),因此它不应该对其产生影响。BundleID有3个组件,例如com.company.myapp - Kilian Schefer
肯定有某些因素影响了它,因为我的测试清楚地显示在升级到iOS 7后(在多个设备上)identifierForVendor不同。看起来我需要做更多的测试... - Andreas Ley
关于identifierForVendor的解释很好。给你点赞。 :) - Mani

9

我进行了一些测试(请参阅在哪些情况下会重置苹果的“advertisingIdentifier”?),似乎是的,当更新到iOS 7时,identifierForVendor确实会发生变化。

至少在我升级过的iPhone 4S和iPad mini上出现了这种情况(前者使用iTunes升级,后者通过空中升级)。

然而,我不知道这是否适用于所有用户/设备和应用程序/配置文件。


更新

苹果公司写道,这可能解释了为什么我的标识符更改了但Kilian的标识符没有更改:

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

这是由于iOS 6和iOS 7之间的行为变化,- [UIDevice identifierForVendor]将考虑bundleID(如果没有供应商ID)。供应商ID仅分配给App Store上的应用程序。


我从你的帖子中得到了一些想法。给你点赞 :) - Mani

4

如果您删除应用程序并重新安装它,identifierforvendor也会更改!

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

仅供参考!


这似乎不是真的,至少不再是。从我的设备中删除了帐户中的所有应用程序并重新安装后,得到了相同的UUID。 - shim

0

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

苹果把MAC地址移除真是个好主意......而且这更加伟大......谁负责这个的人应该得到荣誉勋章。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接