iOS10无法获取IDFA的问题

iOS10上,如果用户开启了“限制广告跟踪”选项(设置->隐私->广告),则在使用[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]方法获取IDFA时会返回全部是0,如下:

1

有两种解决方案:

第一种方法是通过isAdvertisingTrackingEnabled属性判断是否可以返回正确的IDFA,如果返回为NO,则可以提示用户去设置中关闭限制广告跟踪。代码如下:

1
2
3
4
5
6
7
NSString *idfa = nil;
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
}
else {
// 弹窗提示用户关闭限制广告跟踪
}

另外一种更好的方法是使用第三方库获取IDFA,这里推荐两个第三方库:OpenIDFASimulateIDFA,个人更推荐SimulateIDFA,因为他的重复率更低。