identifierForVendor在重新安装时更改

identifierForVendor 应该改变应用程序的重新安装:

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

https://developer.apple.com/reference/uikit/uidevice/1620059-identifierforvendor

不过,我刚刚在app store的一个实时应用中testing了这一点。 即使我们的许多其他应用程序仍然安装在设备上,如果我重新安装应用程序A,则每次从identifierForVendor返回的UUID都会更改。

这不是这样的。

这曾经工作。 但是在某些时候,UUID似乎已经开始改变“简单重装”(如上所述)。 这是一个已知的错误? 已知identifierForVendor与上面的文档相比已经被破坏了吗? 任何解决方法(除了将UUID保存到钥匙串,因为该方法与iCloud同步打破)?

这是一个已知的错误。 似乎苹果公司在5月28日左右对AppStore进行了更新,导致了这种新的行为。 如果您在App Developer论坛中进行search,则还有其他开发者报告相同的问题。

苹果的签名gc已经回答了这个问题:“请在https://developer.apple.com/bug-reporting >上提供关于这个bug的报告。我们知道这个问题,正在调查。目前没有已知的解决方法。“

我们即将重新提交使用App Group权利给我们共享NSUserDefaults。 这听起来像应用程序组NSUserDefaults(不同于keychain-access-group和iCloud键值存储权利)在设备上共享,但不在iCloud帐户上共享。 如果共享的“deviceid”NSUserDefault键不存在,我们将保存IdentifierForVendor ID,然后在保存后将其用于所有应用程序。