identifierForVendor 不应该在重新安装应用时更改:
此应用程序(或其他应用程序)中此属性的值保持不变 iOS设备上安装了来自同一供应商的应用程序。价值 当用户从中删除所有该供应商的应用程序时更改 设备,然后重新安装其中一个或多个。价值可以 在使用Xcode安装测试版本或安装时也会更改 使用ad-hoc分发的设备上的应用程序。因此,如果你的应用程序 在任何地方存储此属性的值,您应该优雅地 处理标识符更改的情况。
https://developer.apple.com/reference/uikit/uidevice/1620059-identifierforvendor
但是,我刚刚在应用商店中使用我们的一个实时应用对此进行了测试。即使设备上仍然安装了许多其他应用程序,如果我重新安装应用程序A,则每次都会从identifierForVendor返回的UUID发生更改。
不是这样的。
这曾经工作过。但在某些时候,UUID似乎已经开始改变"简单的重新安装" (如上所述)。这是一个已知的错误?已知identifierForVendor与上述文档相比已被破坏吗?任何解决方法(除了将UUID保存到钥匙串,因为该方法会因iCloud同步而中断)?
答案 0 :(得分:8)
这是一个已知的错误。似乎Apple对AppStore进行了更新,导致在5月28日左右为identifierForVendor引发这种新行为。如果您在App Developer论坛中搜索,则有其他开发人员报告相同的问题。
Apple的签名gc已就此问题回答了以下答案: "请在https://developer.apple.com/bug-reporting>处提交有关此问题的错误报告。我们已经意识到这个问题正在调查中。目前还没有已知的解决方法。"
答案 1 :(得分:0)
我们即将使用App Group权利重新提交给我们共享的NSUserDefaults。听起来像App Group NSUserDefaults(与keychain-access-group和iCloud键值存储权利不同)在设备上共享,但不在iCloud帐户上共享。如果共享" deviceid" NSUserDefault密钥不存在,我们将保存IdentifierForVendor ID,然后在保存后将其用于我们的所有应用。
答案 2 :(得分:0)
identifierForVendor
可能会发生变化。另外,如果您是直接从Xcode进行构建和安装,它肯定会发生变化。
在iOS设备上安装了该应用程序(或来自同一供应商的另一个应用程序)时,此属性中的值保持不变。当用户从设备上删除该供应商的所有应用程序,然后重新安装其中一个或多个应用程序时,该值将更改。使用Xcode安装测试版本或使用临时发行版在设备上安装应用程序时,该值也会更改。因此,如果您的应用将此属性的值存储在任何位置,则应妥善处理标识符更改的情况。
来源:UIKit / UIDevice / identifierForVendor