要识别用户,首先就是要选择一个标识符,经过这个标识符来识别这个用户的设备(而不是用户),这个标识符要可以保证一个设备上返回的值是同样的,而且在其余设备上不会出现相同的值。app
在iOS7以前,曾经有过不少方法来识别用户的设备,从最原始的设备udid、mac地址,到被各广告统计平台普遍使用的开源方案OpenUDID。ide
但随着AppStore开始拒绝接受使用udid的应用,到mac地址在iOS7上全部设备上都返回相同的值,再到iOS7上对剪贴板的限制,致使OpenUDID没法被不一样应用共享相同的值,注定了上面提到的这些id们不得不退出历史的舞台。spa
随着iOS7快速占据了半壁江山,设备id的控制权终于完全回到了Apple手中,同时也让用户可以把控本身的隐私,充分代表了是苹果对用户隐私保护的决心。code
好了,其实就一个问题:iOS7时代咱们用什么来追踪和识别用户?xml
PS:尘埃落定,跟着Apple走,你们不用再犹豫了。开发
代码:io
#import <AdSupport/AdSupport.h> NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
来源:iOS6.0及之后import
代码:coding
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
来源:iOS6.0及之后方法
设备惟一标识符(Unique Device Identifier)以前被各类国内外统计平台,应用开发商普遍使用,后Apple从2013年05月01日起拒绝接受使用UDID的应用后,立毙!
每个网卡都有一个惟一的标识,即Mac地址,显然用来标识一个手机是绰绰有余的了,也有一些开源的方案也用到了它,国内UMTrack等也用它做为过主id,随着iOS7返回一样的值后,不得不退隐江湖。
在Apple拒绝UDID后,OpenUDID做为独立于Apple的开源方案,被广大的开发者所接受,各大统计广告平台都从UDID等方案切换到OpenUDID的方案(看来你们都不想彻底被Apple束缚啊),但不幸的事,一样因为iOS7对剪贴板的限制,致使同一个设备上应用间,没法再共享一个OpenUDID,即OpenUDID做为设备惟一标识的能力被大大削弱。也能够看到随着iOS7的来临,各广告平台都迅速更新本身的SDK,来切换到苹果的idfa的方案上来。
CFUUID、NSUUID等本身生成,本身存储管理的就不细说啦。
这是推送用的令牌,用户若是没开推送,或者拒绝了,这个就没有了!