iOS6 UDID-identifierForVendor相对于identifierForAdvertising有什么优势?


69

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

-identifierForVendor

  • 同一开发人员的应用之间的ID相同。
  • 删除该团队ID的最后一个应用后删除。
  • 备份。

-identifierForAdvertising

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

在我看来,这-identifierForVendor是次等的,-identifierForAdvertising因为它将在上次从供应商处卸载应用程序时重置并通过“擦除所有内容和设置”来重置。

相比-identifierForVendor有什么优势-identifierForAdvertising


4
您张贴的问题不是也提供答案
吗?)

对于我能想到的所有用例,identifierForAdvertising都比较出色。我看不到用于identifierForVendor的用途。
Tihom 2012年

2
苹果网站上有一个完整的开发人员论坛,您可以在这里讨论iOS6,而不必担心NDA。
阿比森

Answers:


34

重要说明

苹果刚刚发布了iOS 6.0,并且取消了保密协议。

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

[[UIDevice currentDevice] identifierForAdvertising]

这种方法已经被列入在iOS 6.如果你使用上面的方法,您的应用(最有可能)崩溃和被拒绝!

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


13
请注意,这仅用于identifierForAdvertisingidentifierForVendor留在UIDevice班上。
Andrei 2012年

现在只有我奶奶在使用iOS 6,所以我假设identifierForAdvertising是公平的游戏吗?
botbot

1
@botbot是的,我们几乎所有应用程序的最低目标是iOS 7 ...您的应用程序可能也应该......]
JRG-Developer 2014年

23

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

ASIdentifierManager类具有属性advertisingTrackingEnabled,根据用户的广告跟踪限制,该属性返回true或false。即使设备advertisingIdentifier退出广告,无论该设备是否退出,该属性都会返回该设备的广告标识符,但如果用户选择退出,则不应使用该标识符。

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


1
这是解决实际问题的唯一可靠答案。谢谢。
罗勒·布尔克2014年

8

我怀疑如果您identifierForAdvertising用于与广告无关的任何事情,Apple只会拒绝您的应用程序(即,identifierForAdvertising即使您不是广告网络,还是将其发送到您自己的服务器上,或者您identifierForAdvertising在与其他可能识别个人身份的数据)。

如果我的猜想是正确的,则identifierForVendorover的优点identifierForAdvertising是它不会使您的应用程序被拒绝。


您对此有第一手了解吗?您是否提交了带有新广告或供应商ID的任何内容?
Tihom 2012年

1
正如我所说,这只是一个猜测。
Ole Begemann 2012年

3
我认为发送IFA导致您的应用被拒绝的可能性很小。将IFA发送到您自己的服务器而不成为“广告网络”是完全有正当理由的。服务器到服务器的转换跟踪
wallacer 2012年

5

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



1

要基于iOS 6中设备的唯一标识符创建uniqueString,请执行以下操作:

#import <AdSupport/ASIdentifierManager.h>

NSString *uniqueString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"uniqueString: %@", uniqueString);

1
这是一个可怕的建议,请执行以下操作:[[NSUUID UUID] UUIDString]
Kevlar 2014年

否。您是否已阅读问题中的identifierForVendor / advertisingIdentifier描述?你读过这个问题吗?
jrc 2015年

0

这些API的设计太糟糕了,可以清楚地说-Apple不想让我们识别用户设备。

只需查看identifierForVendor描述即可。

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

他们没有使用显而易见的解决方案,该解决方案可以随时工作,并且不依赖于安装/删除-返回SHA-1(或其他散列)的内部硬件设备ID与Team ID串联在一起。


0

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


0

要知道的重要一点是,只能将identifierForVendor的备份还原到同一设备上。如果将备份还原到其他设备,则会清除标识符。


嘿,malhal,您是否测试了具有来自应用商店的具有应用程序的应用程序的设备是否已identifierForVendor在设备A上备份并在设备B上还原identifierForVendor?我在文档中找不到与该答案相关的任何内容。
塞格夫

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.