1 IDFA(identifierForIdentifier
iOS6系统发布的时候,苹果官方出了一个IDFA的设备ID,广告标示符,适用于对外:例如广告推广,换量等跨应用的用户追踪等。 缺陷:通过设置-> 隐私 -> 广告 -> 还原广告标示符,可以还原IDFA,iOS7之后也可以通过该页面的限制广告跟踪按钮,让IDFA无法获取。所以IDFA可能出现取不到的情况,而且采集了IDFA后,提交App的时候,会问你是否拿了IDFA?是否拿IDFA在App里放广告?是否用来投放广告?在审核的时候需要注意以防苹果拒绝你的App上架。
2 IDFV(identifierForVendor)
是给Vendor(应用提供商,即开发者)标识用户用的,每个设备在所属同一个Vendor的应用里,都有相同的值,适用于对内:例如分析用户在应用内的行为等。准确点说,是通过BundleID的DNS反转的前两部分进行匹配,如果相同就是同一个Vender,例如对于com.somecompany.appone,com.somecompany.apptwo 这两个BundleID来说,就属于同一个Vendor,共享同一个IDFV的值。虽然IDFV一定可以取到,但也有缺陷:将所有同一个Vendor下的App全部删除,重装后会重新生成新的IDFV,仅这一条就无法设备标识的唯一性。
3 SimulateIDFA
SimulateIDFA原理是收集设备参数组合计算一个ID值。SimulateIDFA源码剖析可知前16位计算的参数有:系统版本、硬件型号、运营商信息、硬盘容量、核心文件创建、修改时间(组合计算一个16位MD5值后取中间8位后使用%02x占位符填充至16位),后16位计算的参数有:系统开机时间、国家代码、系统语言、设备名称(组合计算一个16位MD5值后取中间8位后使用%02x占位符填充至16位)。SimulateIDFA可以保持极低的重复率,缺陷:任何易变参数参数改变都可导致ID值变化,缺少严谨性唯一性。
方案:
- IDFA+Keychain (IDFA为空取IDFV)
- IDFV+Keychain
- SimulateIDFA+Keychain
Keychain 简介
Keychain Services 是 macOS 和 iOS 都提供一种安全地存储敏感信息的工具,比如,网络密码:用于保存访问服务器或者网站,通用密码:用来保存应用程序或者数据库密码.与此同时,用于认证的证书,密钥,和身份信息,也可以存储在Keychain中.Keychain Services 的安全机制保证了存储这些敏感信息不会被窃取。简单说来,Keychain 就是一个安全容器。 PS:在iOS中keychian 依赖用于签名的provisioning profile描述文件,确保发布不同版本的时候使用同一个pp文件
简单说Keychain Services可以存储一些信息,并且不会因为app删除而删除,并且只能自己的app获取。
评论记录:
回复评论: