首先,苹果开发者指南禁止/不鼓励使用IDFA来追踪用户以显示定向广告(以及其他一些事情)。该指南明确允许开发者将IDFA用于安全目的下识别设备。引用苹果指南:
“advertisingTrackingEnabled”
一个布尔值,指示用户是否有限制广告跟踪。(只读)
@property(nonatomic, readonly, getter=isAdvertisingTrackingEnabled) BOOL advertisingTrackingEnabled
“Discussion”
在执行任何广告跟踪之前,请检查此属性的值。如果值为NO,则仅将广告标识符用于以下目的:频率上限、转换事件、估计独特用户数、安全和欺诈检测以及调试。
您可以使用设备的IDFA进行多设备登录。流程大致如下:
1. 用户使用设备A登录服务器,服务器返回一个令牌,该令牌存储在设备的NSUserDefaults中。应用程序还会在设备上存储IDFA。
2. 此令牌将用于创建包含IDFA的加密字符串。(使用令牌加密IDFA)加密值将随每个请求与原始IDFA一起传递到服务器。
3. 然后,服务器将使用与其关联的IDFA和令牌(服务器当然会存储与每个令牌相对应的IDFA)来获取IDFA的加密值,并将其与请求中收到的加密值进行匹配。这样做的目的是确保没有人可以侵入您的服务器,因为令牌除了应用程序之外任何人都看不到(甚至可以将令牌以加密格式存储以增加安全级别)。
4. 每当向服务器发送请求时,都会将存储在NSUserDefaults中的IDFA值与当前IDFA进行比较。
5. 如果存在不匹配,首先将当前IDFA更新到服务器,然后在获得成功更新的确认后,应用程序将用当前IDFA替换存储在NSUserDefaults中的IDFA(然后业务运行如常)。
或者,您可以避免第3、4步和在设备上存储IDFA在NSUserDefaults中,但这样用户在重置IDFA时必须重新登录服务器。
只是确认,令牌到IDFA的映射将是多对一。
希望这有所帮助,如果有任何不清楚/不满足用例的地方,请在评论中说明。