从iOS6更新到iOS7时,identifierForVendor会发生变化吗?

时间:2013-09-20 08:19:19

标签: ios objective-c ios6 ios7

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

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

通过iTunes / OTA进行更新怎么样?

4 个答案:

答案 0 :(得分:10)

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

同样重要的是,identifierForVendor与Apple开发者帐户无关,而与应用的包标识符无关。

因此,如果您有2个开发者帐户,并且每个帐户都使用捆绑标识符com.company.xxx创建了1个应用,则他们将拥有identifierForVendor相同的com.company.

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

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

答案 1 :(得分:9)

我做了一些测试(参见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之间的行为发生了变化    - 如果没有供应商ID,[UIDevice identifierForVendor]会考虑bundleID。供应商ID仅分配给应用程序上的应用程序   存储。

答案 2 :(得分:4)

删除应用程序并重新安装时,identifierforvendor也会更改!

  

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

FYI!

答案 3 :(得分:0)

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

苹果拿出mac-address的好主意...... 这甚至更大......对此负责的人应该获得荣誉勋章