iOS 6 UDID - identifierForVendor 与 identifier For Advertising 相比有啥优势?
Posted
技术标签:
【中文标题】iOS 6 UDID - identifierForVendor 与 identifier For Advertising 相比有啥优势?【英文标题】:iOS6 UDID - What advantages does identifierForVendor have over identifierForAdvertising?iOS 6 UDID - identifierForVendor 与 identifier For Advertising 相比有什么优势? 【发布时间】:2012-08-03 21:25:55 【问题描述】:Apple 正在更改 ios6 的隐私设置并弃用设备 UUID (UDID)。根据 WWDC 演示文稿和文档,UDID 有两个替代品,都在 UIDevice
类中:
-identifierForVendor
同一开发者的应用之间的 ID 相同。
删除该团队 ID 的最后一个应用。
已备份。
-identifierForAdvertising
设备独有。
适用于所有应用程序;用于广告 - iAd 已从 iOS 6 及更高版本的 UDID 转换。
使用“清除所有内容和设置”进行重置。
已备份。
在我看来,-identifierForVendor
不如-identifierForAdvertising
,因为它会在上次从供应商处卸载应用程序时重置,并通过“删除所有内容和设置”来重置。
-identifierForVendor
比-identifierForAdvertising
有什么优势?
【问题讨论】:
您发布的问题是否也提供了答案:) 对于我能想到的所有用例,identifierForAdvertising 都更胜一筹。我看不到 identifierForVendor 的用途。 Apple 网站上有一个完整的开发者论坛,您可以在那里讨论 iOS6 而无需担心 NDA。 【参考方案1】:我怀疑如果您将identifierForAdvertising
用于与广告无关的任何内容(即,如果您将identifierForAdvertising
发送到您自己的服务器,即使您不是广告网络或如果您在同一请求中发送 identifierForAdvertising
以及其他可能识别个人的数据)。
如果我的怀疑是正确的,identifierForVendor
相对于identifierForAdvertising
的优势在于它不会让您的应用被拒绝。
【讨论】:
你有这方面的第一手资料吗?您是否使用新的广告或供应商 ID 提交了任何内容? 正如我所说,这只是一个猜测。 我认为发送 IFA 不太可能导致您的应用被拒绝。有完全正当的理由将 IFA 发送到您自己的服务器而不是“广告网络”,即。服务器到服务器转换跟踪【参考方案2】:重要提示:
Apple 刚刚发布 iOS 6.0,NDA 已解除。
对于抢先包含引用的代码的开发人员
[[UIDevice currentDevice] identifierForAdvertising]
此方法未包含在 iOS 6 中。如果您使用上述方法,您的应用将(很可能)崩溃并被拒绝!
相反,Apple 创建了一个新类 ASIdentifierManager
,其中包含方法 advertisingIdentifier
。这是上面的apple docs:
【讨论】:
请注意,这仅适用于identifierForAdvertising
。 identifierForVendor
保留在 UIDevice
类中。
现在只有我奶奶在使用 iOS 6,所以我假设 identifierForAdvertising 是公平的游戏?
@botbot 是的,我们的最低目标是 iOS 7 几乎我们所有的应用程序......你的可能也应该...... :]【参考方案3】:
它们是两个不同的 ID,用于两种不同的目的。 我认为 identifierForVendor 将用于执行需要链接到特定用户/设备的应用程序的操作,例如提供推送通知和更新用户的应用程序数据服务器端(例如他们的分数或存储的任何其他数据)他们)。 identifierForAdvertising 应该用于诸如有针对性的广告之类的事情,还应该用于检查特定广告活动的有效性(检查哪些设备因特定广告而安装了应用程序)。
【讨论】:
【参考方案4】:用户可以限制在手机上使用广告跟踪。请参阅“设置”>“常规”>“关于”>“广告”下的 this article on the opt-out mechanism。
新的ASIdentifierManager
类有一个属性advertisingTrackingEnabled
,它根据用户的广告跟踪是否受限而返回真或假。即使设备的广告标识符由advertisingIdentifier
属性返回而不管选择退出,如果用户选择退出,您也不应该使用该标识符。
因此,identifierForVendor 的优势在于,无论用户选择加入或退出广告跟踪,您都可以始终访问并有权使用手机的此 ID。
【讨论】:
这是解决实际问题的唯一可靠答案。谢谢。【参考方案5】:这些 API 设计得非常糟糕,这清楚地表明 - Apple 不希望我们识别用户设备。
只需查看 identifierForVendor 描述即可。
如果用户删除来自同一供应商的所有应用程序,则会删除它。 :( 它不可靠 - 可以返回 nil(如果发生这种情况,文档建议“等待”一段时间。:(
他们没有使用明显的解决方案,该解决方案随时有效,不依赖于安装/删除 - 返回与团队 ID 连接的内部硬件设备 ID 的 SHA-1(或任何其他哈希)。
【讨论】:
【参考方案6】:在iOS 6中根据设备的唯一标识符创建一个uniqueString:
#import <AdSupport/ASIdentifierManager.h>
NSString *uniqueString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"uniqueString: %@", uniqueString);
【讨论】:
这是一个糟糕的建议,这样做:[[NSUUID UUID] UUIDString]
没有。您是否阅读了问题中 identifierForVendor/advertisingIdentifier 的描述?你读过这个问题吗?【参考方案7】:
identifierForAdvertising
在跟踪方面可能更胜一筹,但可能会受到用户当前或将来选择退出的影响。另一方面,identifierForVendor
不太可能成为用户的主题。
【讨论】:
【参考方案8】:使用 供应商 ID。 这是一篇很有启发性的文章http://www.doubleencore.com/2013/04/unique-identifiers/
【讨论】:
【参考方案9】:要知道的重要一点是,identifierForVendor 的备份只能恢复到同一设备。如果备份恢复到不同的设备,则清除标识符。
【讨论】:
嘿,malhal,您是否测试过具有来自应用商店的使用identifierForVendor
的应用程序的设备在设备 A 上备份并在设备 B 上恢复是否会重置 identifierForVendor
?我在文档中找不到与该答案相关的任何内容。【参考方案10】:
用户可以随时在“设置”中更改 identifierForAdvertising, 如果设备上没有来自该供应商的应用,则重新安装应用后 identifierForVendor 会发生变化。
这是获取或持久、交叉安装设备标识符的替代方案和最佳解决方案:
描述:https://blog.onliquid.com/persistent-device-unique-identifier-ios-keychain/
代码:https://gist.github.com/miguelcma/e8f291e54b025815ca46
【讨论】:
以上是关于iOS 6 UDID - identifierForVendor 与 identifier For Advertising 相比有啥优势?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 6 UDID - identifierForVendor 与 identifier For Advertising 相比有啥优势?