[UIDevice currentDevice].identifierForVendor 的替代品

Posted

技术标签:

【中文标题】[UIDevice currentDevice].identifierForVendor 的替代品【英文标题】:Alternative to [UIDevice currentDevice].identifierForVendor 【发布时间】:2013-08-11 03:35:51 【问题描述】:

我的一款产品有两种不同的应用。以及它为同一设备为我提供不同标识符的两个应用程序(您会假设苹果会将其与您的开发人员帐户相关联,以便您可以在您的应用程序中重复使用这些信息),但我想知道他们能给我的任何东西两个应用程序上的设备标识符相同?

【问题讨论】:

【参考方案1】:

identifierForVendor 真的是你想要的。 UDID 在 AppStore 上是个大问题。用户可以选择退出advertisingIdentifier。其他方式(通过 MAC 地址,如 ODIN1,以及依赖 UIPasteboard 的解决方案,如 OpenUDID)将在未来中断(提示:7)。

根据docs,如果两个应用来自同一个开发者,您应该有相同的标识符:

此属性的值对于来自同一供应商并在同一设备上运行的应用相同。对于同一设备上来自不同供应商的应用,以及不同设备上的应用,无论供应商如何,都会返回不同的值。

如果应用程序在后台运行,在设备重新启动后用户第一次解锁设备之前,此属性的值可能为 nil。如果值为nil,等待稍后再取值。

此属性中的值在 iOS 设备上安装应用(或来自同一供应商的其他应用)时保持不变。当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。因此,如果您的应用将此属性的值存储在任何地方,您应该优雅地处理标识符发生变化的情况。

【讨论】:

Marcelo 但 identifierForVendor 的问题是它对我的两个应用程序都发生了变化。我想要特定于设备和供应商的东西,以便我可以在与我的开发者帐户关联的所有应用程序中重复使用它 它不应该改变。如果您确定您使用同一个帐户来签署这两个应用程序,则应提交雷达。 哦!好的,我会报告给苹果 我也即将提交雷达,因为我现在已经看到 10 个我的 identifierForVendor 实例在没有删除应用程序或系统恢复的情况下发生变化。我还有多个使用相同配置文件签名的应用程序,并且具有相同的 com.companyname 捆绑 ID 结构,但这并不能阻止它发生变化。这个问题出现在我的 Enterprise Distribution 应用程序上,不确定 App Store 的分布情况。 如果您使用企业分发您的身份号码是通过 MAC 地址生成的【参考方案2】:

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

【讨论】:

以上是关于[UIDevice currentDevice].identifierForVendor 的替代品的主要内容,如果未能解决你的问题,请参考以下文章

为啥“[[UIDevice currentDevice] identifierForVendor]”会导致内存泄漏?

[UIDevice currentDevice].identifierForVendor 的替代品

通过网络发送 iphone 的 [[UIDevice currentDevice] name]

如何检测是不是有任何外部库正在调用 [UIDevice currentDevice] uniqueIdentifier]?

获取iOS系统版本号,慎重使用[[[UIDevice currentDevice] systemVersion] floatValue]——sdk缺陷

UIDevice 在 swift 2.0 中不起作用