iOS 数据打通研究(IDFA与KeyChain)
由于项目要打通不同APP间的数据,所以针对问题研究了一下,IDFA与KeyChain打通数据,目前来说用IDFA来关联打通数据是最常用的,友盟就是通过IDFA来的,下面请看详细分析:
keyChain数据获取问题:
一、问题描述:
APP1 和 APP2 存储UUID数据到keyChain中,使用相同的key,预期两个APP的UUID本该相同,但是经过测试,两个APP的从keyChain中取出来的值并不同。
二、问题验证:
经过查找资料以及实际验证,keyChain在特定情况下是可以在多个APP中共用的。以下是详细分析:
多种情况对比详细解释如下:
多个APP获取不到keyChain中的数据的情形:
1、在不同开发者账号中的keyChain之间的数据是不能共享的。
2、在同一开发者账号中的keyChain sharing中的keyChain Groups中的设置不同。
多个APP获取到keyChain中的数据的情形:
1、在同一开发者账号下,在keyChain Groups共享组中设置同一个值来实现keyChain中的数据共享。(注意,必须是同一个开发者账号下的APP)测试实验如下:
在TestSDK工程中的keyChain Groups使用工程SDKDemo-9.1中的keyChain Groups设置com.trs.cn.SDKDemo-9-1,我们获取到的设备标识都是
D385D158-203A-4B76-AFFD-520AC4C4F9D8,说明在此种情况下keyChain中的数据是可以在不同的APP中共享的。
TestSDK 的keyChain Groups设置com.trs.cn.SDKDemo-9-1以及数据展示:
SDKDemo-9.1的keyChain Groups设置com.trs.cn.SDKDemo-9-1:
SDKDemo-9.1IDFA获取问题:
一、IDFA简介
IDFA在APP中可以作为手机唯一标识(重置或禁止使用IDFA不做讨论),在用户不在设置中重置的情况下,IDFA并不会改变。但是获取IDFA要求APP在发布时勾选相关广告的设置,否则会被APP Store打回。
二、测试验证
通过测试验证,IDFA为同一款手机上的所有APP获取的IDFA全部相同,且不会因为APP的重新启动或者删除后再次下载而改变。
测试输出在设置中还原广告标识符,IDFA会改变,如果限制广告跟踪,则IDFA无法获取。下图为还原广告标识符后,IDFA改变的输出:
还原广告标识符