69

Apple 正在更改其 iOS6 的隐私设置并弃用设备 UUID (UDID)。根据 WWDC 演示文稿和文档,在UIDevice类中有两个 UDID 的替代品:

-identifierForVendor

  • 来自同一开发者的应用程序之间相同的 ID。
  • 删除该团队 ID 的最后一个应用程序后删除。
  • 备份。

-identifierForAdvertising

  • 设备独有。
  • 适用于所有应用程序;用于广告 — iAd 已从 iOS 6 及更高版本的 UDID 转换。
  • 使用“删除所有内容和设置”进行重置。
  • 备份。

在我看来,这似乎-identifierForVendor不如,-identifierForAdvertising因为它会在最后一次从供应商处卸载应用程序时重置,并通过“删除所有内容和设置”来重置。

-identifierForVendor有什么优势-identifierForAdvertising呢?

4

10 回答 10

34

重要提示

苹果刚刚发布了 iOS 6.0,NDA 已经解除。

对于抢先包含引用的代码的开发人员

[[UIDevice currentDevice] identifierForAdvertising]

这个方法在 iOS 6 中还没有包含。如果你使用上面的方法,你的应用程序(很可能)会崩溃并被拒绝!

相反,Apple 创建了一个新类ASIdentifierManager,其中包含方法advertisingIdentifier。这是上面的苹果文档

于 2012-09-19T21:41:30.980 回答
23

用户可以限制在手机上使用广告跟踪。请参阅设置 > 常规 > 关于 > 广告下 有关退出机制的这篇文章。

ASIdentifierManager类有一个属性advertisingTrackingEnabled,它返回 true 或 false,具体取决于用户是否有有限的广告跟踪。即使设备的广告标识符由advertisingIdentifier属性返回而不管选择退出,如果用户选择退出,您也不应该使用该标识符。

因此,identifierForVendor 的优势在于,无论用户是否选择加入或退出广告跟踪,您始终可以访问并有权使用手机的此 ID。

于 2012-10-02T21:51:14.660 回答
8

我怀疑如果您将应用程序identifierForAdvertising用于与广告无关的任何内容(即,identifierForAdvertising即使您不是广告网络,您也将其发送到自己的服务器,或者如果您identifierForAdvertising在同一请求中发送其他可能识别个人的数据)。

如果我的怀疑是正确的,identifierForVendorover的好处identifierForAdvertising是它不会让您的应用程序被拒绝。

于 2012-09-04T10:27:52.147 回答
5

它们是两个不同的 ID,用于两种不同的目的。我认为 identifierForVendor 将用于执行需要链接到特定用户/设备的应用程序的操作,例如提供推送通知和更新用户的应用程序数据服务器端(例如他们的分数或存储的任何其他数据)他们)。
identifierForAdvertising 应该用于诸如有针对性的广告之类的事情,也应该用于检查特定广告活动的有效性(检查哪些设备由于特定广告而安装了应用程序)。

于 2012-09-28T16:06:33.410 回答
3

使用VendorID。这是一篇很有启发性的文章http://www.doubleencore.com/2013/04/unique-identifiers/

于 2013-11-14T12:34:37.093 回答
1

在 iOS 6 中根据设备的唯一标识符创建一个 uniqueString:

#import <AdSupport/ASIdentifierManager.h>

NSString *uniqueString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"uniqueString: %@", uniqueString);
于 2013-07-27T03:57:44.613 回答
0

这些 API 设计得非常糟糕,这清楚地表明——Apple 不希望我们识别用户设备。

只需查看 identifierForVendor 描述。

如果用户删除来自同一供应商的所有应用程序,则它会被删除。:( 这不可靠 - 可以返回 nil (如果发生这种情况,文档建议“等待”一段时间。:(

他们没有使用明显的解决方案,该解决方案可以随时工作并且不依赖于安装/删除 - 返回与团队 ID 连接的内部硬件设备 ID 的 SHA-1(或任何其他哈希)。

于 2013-07-11T06:17:56.927 回答
0

identifierForAdvertising在跟踪方面可能更胜一筹,但可能会受到用户当前或将来选择退出的影响。另一方面identifierForVendor不太可能成为用户的主题。

于 2013-07-30T21:54:24.393 回答
0

重要的是要知道 identifierForVendor 的备份只能恢复到同一设备。如果备份恢复到不同的设备,则清除标识符。

于 2014-01-15T06:44:47.433 回答
0

用户可以随时在设置中更改 identifierForAdvertising,如果设备上没有来自该供应商的应用,则重新安装应用后 identifierForVendor 会发生变化。

这是获取或持久、交叉安装设备标识符的替代方案和最佳解决方案:

描述:https ://blog.onliquid.com/persistent-device-unique-identifier-ios-keychain/

代码:https ://gist.github.com/miguelcma/e8f291e54b025815ca46

于 2016-06-06T23:59:44.423 回答