IOS学习——唯一标识符

1.苹果广告审核规则

如果你的应用采集了IDFA,但是在上架的时候申明未使用将肯定被拒绝

如果你的应用采集了IDFA,但是却没有使用广告服务时候肯定会被拒绝,这个时候如果集成广告将不会受影响


2.苹果广告避免方法

IDFA能够较精准的识别用户,尤其对于广告主追踪广告转化率提供了很大帮助。友盟统计分析SDK采集IDFA是为了确保在苹果变更唯一标识符时(例如从UDID变更为OpenUDID),对用户数据进行稳定过渡,而不至于发生数据突增的情况。

如果您的应用由于IDFA问题被AppStore拒绝,可以采取如下建议:
1.以广告主身份尝试申诉,广告主采集IDFA标识是被允许的;
2.集成任意一家广告服务,上线后选择继续使用或关闭该服务;
3.更换苹果帐号重新提交应用(已有开发者顺利通过审核)。
4.不采集IDFA意味着放弃了准确追踪用户的机会,在保证数据的稳定性与一致性方面存在风险。如果您仍希望不采集IDFA,可以通过这里下载无IDFA版本的SDK

3.苹果历史版本唯一序列号

CFUUID
iOS2.0 开始就存在,它是CoreFoundatio包的一部分,因此API属于C语言风格
获得的这个CFUUID值系统并没有存储。每次调用CFUUIDCreate,系统都会返回一个新的唯一标示符

NSUUID
iOS 6中才出现,这跟CFUUID几乎完全一样,只不过它是Objective-C接口
跟CFUUID一样,这个值系统也不会存储,每次调用的时候都会获得一个新的唯一标示符
每次运行的时候都不一样,但是生成的是唯一的

IDFA(IDFA-identifierForIdentifier)
iOS 6中才出现的新的方法,advertisingIdentifier是新框架AdSupport.framework的一部分广告标示符是由系统存储着的。不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,这个广告标示符会重新生成。另外如果用户明确的还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符) ,那么广告标示符也会重新生成。关于广告标示符的还原,有一点需要注意:如果程序在后台运行,此时用户“还原广告标示符”,然后再回到程序中,此时获取广告标示符并不会立即获得还原后的标示符。必须要终止程序,然后再重新启动程序,才能获得还原后的广告标示符。之所以会这样,我猜测是由于ASIdentifierManager是一个单例

Vindor((IDFV-identifierForVendor)
iOS 6中才出现的新的方法,不过获取这个IDFV的新方法被添加在已有的UIDevice类中。
跟advertisingIdentifier一样,该方法返回的是一个NSUUID对象。
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
he value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.
如果满足这样的条件,那么获取到的这个属性值就不会变:相同的vindor-相同的设备,idfv相同。如果是这样的情况,那么这个值是不会相同的:相同的设备-不同的vindor,或者是不同的设备-无论是否相同的vindor。
vendor非常简单:一个Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。例如,com.doubleencore.app1 和 com.doubleencore.app2 得到的identifierForVendor是相同的,因为它们的CFBundleIdentifier 前两部分是相同的。不过这样获得的identifierForVendor则完全不同:com.massivelyoverrated 或 net.doubleencore。 在这里,还需要注意的一点就是:如果用户卸载了同一个vendor对应的所有程序,然后在重新安装同一个vendor提供的程序,此时identifierForVendor会被重置。
Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。来自同一个运营商的应用运行在同一个设备上,此属性的值是相同的;不同的运营商应用运行在同一个设备上值不同。

UDID
ios5已经废弃,系统的唯一序列号,app账号添加就是用的这个

OpenUDID
在每个设备的openUDID是通过第一个带有openUDID sdk包的app生成,当然如果重新刷机这个还是会丢失
在iOS 5发布时,uniqueIdentifier被弃用了,这引起了广大开发者需要寻找一个可以替代UDID,并且不受苹果控制的方案。由此OpenUDID成为了当时使用最广泛的开源UDID替代方案。OpenUDID在工程中实现起来非常简单,并且还支持一系列的广告提供商。
NSString *openUDID = [OpenUDID value];
OpenUDID利用了一个非常巧妙的方法在不同程序间存储标示符 — 在粘贴板中用了一个特殊的名称来存储标示符。通过这种方法,别的程序(同样使用了OpenUDID)知道去什么地方获取已经生成的标示符(而不用再生成一个新的)。
之前已经提到过,在将来,苹果将开始强制使用advertisingIdentifier 或identifierForVendor。如果这一天到来的话,即使OpenUDID看起来是非常不错的选择,但是你可能不得不过渡到苹果推出的方法

MAC地址
MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。这样就可以非常好的标识设备唯一性,类似与苹果设备的UDID号,从iOS7及更高版本往后,如果你向ios设备请求获取mac地址,系统将返回一个固定值“02:00:00:00:00:00”

猜你喜欢

转载自fanfanlovey.iteye.com/blog/2180765