iOS7时代咱们用什么来追踪和识别用户?

要识别用户,首先就是要选择一个标识符,经过这个标识符来识别这个用户的设备(而不是用户),这个标识符要可以保证一个设备上返回的值是同样的,而且在其余设备上不会出现相同的值。app

在iOS7以前,曾经有过不少方法来识别用户的设备,从最原始的设备udid、mac地址,到被各广告统计平台普遍使用的开源方案OpenUDID。ide

但随着AppStore开始拒绝接受使用udid的应用,到mac地址在iOS7上全部设备上都返回相同的值,再到iOS7上对剪贴板的限制,致使OpenUDID没法被不一样应用共享相同的值,注定了上面提到的这些id们不得不退出历史的舞台。spa

随着iOS7快速占据了半壁江山,设备id的控制权终于完全回到了Apple手中,同时也让用户可以把控本身的隐私,充分代表了是苹果对用户隐私保护的决心。code

好了,其实就一个问题:iOS7时代咱们用什么来追踪和识别用户?xml


 

先给结论

  • idfa: 适用于对外:例如广告推广,换量等跨应用的用户追踪等
  • idfv: 适用于对内:例如分析用户在应用内的行为等

PS:尘埃落定,跟着Apple走,你们不用再犹豫了。开发


 

再给解释

idfa

  • 全名:advertisingIdentifier
  • 代码:io

    #import <AdSupport/AdSupport.h>
    
      NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
  • 来源:iOS6.0及之后import

  • 说明:直译就是广告id, 在同一个设备上的全部App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,用户能够在 设置|隐私|广告追踪 里重置此id的值,或限制此id的使用,故此id有可能会取不到值,但好在Apple默认是容许追踪的,并且通常用户都不知道有这么个设置,因此基本上用来监测推广效果,是戳戳有余了。
  • 注意:因为idfa会出现取不到的状况,故毫不能够做为业务分析的主id,来识别用户。

idfv

  • 全名:identifierForVendor
  • 代码:coding

    NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
  • 来源:iOS6.0及之后方法

  • 说明:顾名思义,是给Vendor标识用户用的,每一个设备在所属同一个Vender的应用里,都有相同的值。其中的Vender是指应用提供商,但准确点说,是经过BundleID的DNS反转的前两部分进行匹配,若是相同就是同一个Vender,例如对于com.somecompany.appone,com.somecompany.apptwo 这两个BundleID来讲,就属于同一个Vender,共享同一个idfv的值。和idfa不一样的是,idfv的值是必定能取到的,因此很是适合于做为内部用户行为分析的主id,来标识用户,替代OpenUDID。
  • 注意:若是用户将属于此Vender的全部App卸载,则idfv的值会被重置,即再重装此Vender的App,idfv的值和以前不一样。

 

历史上的英雄们

UDID

设备惟一标识符(Unique Device Identifier)以前被各类国内外统计平台,应用开发商普遍使用,后Apple从2013年05月01日起拒绝接受使用UDID的应用后,立毙!

Mac地址

每个网卡都有一个惟一的标识,即Mac地址,显然用来标识一个手机是绰绰有余的了,也有一些开源的方案也用到了它,国内UMTrack等也用它做为过主id,随着iOS7返回一样的值后,不得不退隐江湖。

OpenUDID

在Apple拒绝UDID后,OpenUDID做为独立于Apple的开源方案,被广大的开发者所接受,各大统计广告平台都从UDID等方案切换到OpenUDID的方案(看来你们都不想彻底被Apple束缚啊),但不幸的事,一样因为iOS7对剪贴板的限制,致使同一个设备上应用间,没法再共享一个OpenUDID,即OpenUDID做为设备惟一标识的能力被大大削弱。也能够看到随着iOS7的来临,各广告平台都迅速更新本身的SDK,来切换到苹果的idfa的方案上来。

其余

CFUUID、NSUUID等本身生成,本身存储管理的就不细说啦。

DeviceToken

这是推送用的令牌,用户若是没开推送,或者拒绝了,这个就没有了!

相关文章
相关标签/搜索