iOS14关于IDFA获取权限调研

微信扫一扫,分享到朋友圈

iOS14关于IDFA获取权限调研

场景

Apple宣布 2020-9-16 发布iOS14新系统,iOS14系统具官网了解,如果需要获取IDFA(广告符),需要用户授权。我们公司合作的第三方广告目前都是通过IDFA在跟踪用户。 iOS13之前的版本可以直接获取,只要用户不手动去设置页面关闭。

所以小调研了一下。

测试设备:iPhone6,iOS14Beta7 开发工具:Xcode11

调用判断IDFA是否开启开关,无论设置里限制广告跟踪的开关是否打开,都是返回 false,但是直接获取却是正确的IDFA值。(不知道是不是iOS14Beta系统的bug)

import AdSupport
// 是否可以获取IDFA,iOS14永远返回 false,但是打印 ASIdentifierManager.shared().advertisingIdentifier.uuidString 有值
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
debugPrint("开着:\(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
} else {
debugPrint("关了:\(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
}
复制代码

打印结果:

"关了:7DE78ED0-3854-4840-A49C-2F33B9DC201B"
复制代码

iOS14后正确的获取方式:

测试设备:iPhone6,iOS14Beta7 开发工具:Xcode12,Beta2

Xcode12引入新的Framework AppTrackingTransparency,代码如下:

import AdSupport
import AppTrackingTransparency
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { (status) in
switch status {
case .denied:
debugPrint("用户拒绝")
break
case .authorized:
debugPrint("用户允许")
debugPrint("IDFA:\(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
break
case .notDetermined:
debugPrint("用户没有选择")
default:
break
}
}
} else {
// iOS13及之前版本,继续用以前的方式
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
debugPrint("可以获取:\(ASIdentifierManager.shared().advertisingIdentifier.uuidString)")
} else {
debugPrint("用户未打开IDFA开关")
}
}
复制代码

同时 info.plist也要添加一个权限提示配置: NSUserTrackingUsageDescription :Vaule为要提示用户授权的一句话,配置完成。

还有一个变动是,iOS14的广告跟踪权限放到了每个App的设置中,而不像之前在隐私全局设置中。

启动App后,会类似推送或者定位的权限提示一样,有一个系统弹窗。

结论:

如果有需要使用IDFA的App,或者和第三方广告有合作的App,需要产品层面设计上考虑,如果用户需选择“要求App不跟踪”,引导用户跳转到设置打开的流程。

技术需要考虑的问题

是要使用 AppTrackingTransparency,必须升级到Xcode12,如果升级到意味着要兼容iOS14,是否还有别的坑。 目前已经发现的坑是, UITableViewCell 直接 cell.addSubView(viewTest) , viewTest 会无法触发到手势响应(像是被cell.contentView遮盖住了)。 必须改为 cell.contentView.sddSubView(viewTest) ,不太清楚是不是 Xcode12Beta版本问题,因为目前正式版Xcode12还未发布。

也可以尝试:

如果我们不着急升级Xcode12,依然使用Xcode11暂时先打包;不判断广告符是否授权,直接获取,是不是依然可以获取到iOS14设备的真实IDFA?

目前拿一台iPhone6的iOS14Beta7测试是可以的,需要更多的测试结果来证明猜测。

微信扫一扫,分享到朋友圈

iOS14关于IDFA获取权限调研

SpringBoot2 集成日志,复杂业务下的自定义实现

上一篇

华为手机明年「全面支持」鸿蒙 2.0 系统

下一篇

你也可能喜欢

iOS14关于IDFA获取权限调研

长按储存图像,分享给朋友