关于移动设备唯一标识生成

1. iOS

iOS的设备唯一标志由iOS系统直接给予,根据应用类型不同分两类:

  • IDFV:Vindor标示符,适用于对内:例如分析用户在应用内的行为等。来源是应用的bundle id,e.g com.shinezone。每个发行商的发行的应用的IDFV是一致的。任何应用可以使用。
  • IDFA:广告标示符,适用于对外:例如广告推广,换量等跨应用的用户追踪等。来源是系统API,设备唯一。仅广告应用可用。

IDFA非广告应用不得使用(来源):

广告

在你提交 app 以供审核时,将向你询问你的 app 是否使用“广告标识符”(IDFA) 来投放广告。如果你指出 app 使用 IDFA,但是没有广告功能或无法正常显示广告,则你的 app 可能被拒绝。请务必在 iOS 设备上对你的 app 进行测试,以确定广告是否可以正常工作。同样,如果你指出你的 app 未使用 IDFA,但可以显示广告,则会将你的 app 置于“无效的二进制文件”状态。

2. Android

Android的设备唯一标志由系统内的几个信息组合按程序算法生成。其算法不受应用、发行商等要素的影响,只要同设备,生成的ID即一致。

3. 问题

  1. A、B两个同公司的应用,是否能在同一玩家游玩的时候对他们进行识别
  2. A、B两个不同公司的应用,是否有什么办法能在同一玩家游玩的时候对他们进行识别
  3. A、B两个不同公司的应用,在植入了同一款广告应用之后,该广告应用是否能对使用这两个应用的玩家进行识别

4. 结论

4.1 iOS

  • 非广告应用:
    • 问题1:可识别
    • 问题2:不可识别
  • 广告应用:都可以识别

4.2 Android

无关是否广告应用,也无关公司所属。都可以识别。

5. 验证

上述结论需要实际实验来进行验证,这里的验证主要是iOS操作系统,无Android部分。测试环境:iPhone7 Plus | iOS 10.3.3

经实际应用测试,上述的结论没有问题。

6. 风险点

6.1 iOS

  • 在本机所有相同BundleID的应用都被删除的情况下,IDFV会被重置
  • 在开启限制广告跟踪开关的情况下,IDFA无法生成(为0)
  • 开关过一次广告跟踪开关之后,本机的IDFA会重置
  • 刷机和还原系统会重置一切

6.2 Android

以下行为会改变Android的唯一标识:

  • 刷机
  • 还原系统
  • 用户更换手机Sim卡
  • 厂商的Bug,定制后的系统,可能多个设备具有一样的Android ID
  • 用户对应用的授权变动