[UIDevice currentDevice].identifierForVendor的替代方案

3
我有一个产品,有两个不同的应用程序。在这两个应用程序中,它为同一设备提供不同的标识符(您可能会认为苹果会将此与开发人员帐户相关联,以便您可以在应用程序之间重复使用信息),但我想知道是否有任何方法可以在两个应用程序中为设备提供相同的标识符?
2个回答

2
identifierForVendor是您需要的内容。在AppStore上,UDID会被禁止使用。用户可以选择退出advertisingIdentifier。其他方法(如通过MAC地址,例如ODIN1,以及依赖UIPasteboard的解决方案,例如OpenUDID)将在未来失效(提示:7)。
根据文档,如果两个应用程序来自同一开发人员,则应该具有相同的标识符:
“该属性的值对于来自同一供应商并在同一设备上运行的应用程序是相同的。对于来自不同供应商的设备上的应用程序以及对于不同设备上的应用程序,则返回不同的值。
如果应用程序在后台运行,并且在设备重新启动后用户第一次解锁设备之前,此属性的值可能为nil。如果值为nil,请稍后再获取值。
该属性中的值在应用程序(或来自同一供应商的另一个应用程序)安装在iOS设备上时保持不变。当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值将更改。因此,如果您的应用程序在任何地方存储此属性的值,则应优雅地处理标识符更改的情况。”

Marcelo,但是identifierForVendor的问题在于它会对我的两个应用程序都进行更改。我想要一个设备和供应商特定的东西,这样我就可以在与我的开发者帐户相关联的所有应用程序中重复使用它。 - Jonathan
不应该改变。如果您确定在两个应用程序中使用的是同一个帐户,则应该提交一个雷达报告。 - Marcelo
哦!好的,我会向苹果报告。 - Jonathan
我即将提交一个雷达,因为我已经看到了10个实例的identifierForVendor在没有应用程序删除或系统恢复的情况下发生了变化。我还有多个使用相同配置文件签名并具有相同com.companyname包标识结构的应用程序,但这并不能防止它发生变化。这个问题出现在我的企业分发应用程序上,不确定App Store分发是否也会出现。 - Bek
如果您使用企业分发,则您的身份识别号是从MAC地址生成的。 - rado

0

OpenUDID 是迄今为止最好的解决方案,即使设备被重置,它也可能会发生变化。


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