UDID、IDFV、IDFA、UUID 的区别

UDID (Unique Device Identifier)

iOS设备的唯一识别码,它由40位16进制数的字母和数字组成,除了越狱,没什么办法可以改变它

  • 获取方式

    [[UIDevice currentDevice] uniqueIdentifier];
    

    iOS 5.0 开始废弃,采用改方法获取,审核会被拒.之所以废弃是因为通过UDID可以锁定一台设备,存在一定的风险

IDFV (IdentifierForVendor)

Normally, the vendor is determined by data provided by the App Store.
If the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app’s bundle ID.
The bundle ID is assumed to be in reverse-DNS format.

  • 线上: IDFV 会根据App Store给的数据决定,卸载重装后也一致 (不同设备是不一样的)

  • 开发: 如果不是从App Store安装的,那么会根据bundle ID的前两个字端进行计算,所以 com.example.a 和 com.example.b 在开发阶段计算出来的IDFV 会是一样的.

  • 获取方式

    #import <AdSupport/ASIdentifierManager.h>
    [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]
    
  • 重置方式

    • (未从App Store 下载时)当 bundle ID为 com.example.? 所有的app卸载之后会重置IDFV

IDFA (IdentifierForIdentifier)

广告标示符,在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的

  • 获取方式

    #import <AdSupport/AdSupport.h>
    [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    
  • 重置方式

    • 重置系统
    • 设置程序 -> 通用 -> 还原 -> 还原位置与隐私
    • 设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符 -> 重启

UUID (Universally Unique Identifier)

通用唯一识别码(伪唯一),但是因为UUID随机数算法得到的数重复概率为170亿分之一,几乎可以保证每次随机出来的值都是唯一的

  • 获取方式

    [NSUUID UUID].UUIDString
    
  • 重置方式

    • 每次运行都会改变

唯一ID

可以通过UUID + Keychain的方式来得到唯一值

推荐阅读更多精彩内容