如果您要记录设备的广告主 ID (即 IDFA),需要先展示弹窗获得用户的授权。要达到这个目的,您需要在应用中添加 Apple 的 App Tracking Transparency (ATT) 框架。Adjust SDK 会存储用户的授权状态并在每次请求中将该信息发送至 Adjust 服务器。
授权状态
状态 | 代码 | 描述 |
---|---|---|
ATTrackingManagerAuthorizationStatusNotDetermined | 0 | 用户尚未对访问权限请求弹窗做出响应 |
ATTrackingManagerAuthorizationStatusRestricted | 1 | 用户已在设备层级禁止应用相关数据访问 |
ATTrackingManagerAuthorizationStatusDenied | 2 | 用户已拒绝授予可用于设备监测的应用相关数据访问权限 |
ATTrackingManagerAuthorizationStatusAuthorized | 3 | 用户已授予可用于设备监测的应用相关数据访问权限 |
ATT 授权包装器
Adjust SDK 包含 Apple requestTrackingAuthorizationWithCompletionHandler
方法的包装器。如果您不想对 ATT 弹窗进行自定义,则可以使用这一包装器。
用户对授权窗口做出响应时,回传方法就会被触发。该方法会将用户的授权状态代码发送至 Adjust 服务器。您可以在回传函数中定义每种状态代码的响应。
您必须指定 ATT 的文本内容。为此,请将文本加入 Info.plist
文件中的 NSUserTrackingUsageDescription
key。
了解当前授权状态
您可以随时读取用户当前授权状态。调用 getAppTrackingAuthorizationStatus
方法来以 整数 形式返回授权状态代码。
自定义弹窗时机
如果您的应用包含新手引导流程或教程,那么最好在用户完成新手引导流程或教程后再发送用户的 ATT 许可状态。您可以设置 attConsentWaitingInterval
属性将数据发送延迟最多 120 秒 ,让用户有足够的时间完成初始用户引导。延时结束或用户设置许可状态后,SDK 会将在延迟时间内记录的所有信息以及用户许可状态发送给 Adjust 服务器。
查看授权状态变化
如果使用自定义 ATT 弹窗,那么您需要告知 Adjust SDK 用户的授权状态。调用 checkForNewAttStatus
方法,以向 Adjust 服务器发送授权状态。
iOS 17 用户许可处理
在 iOS 17 中,Apple 对于开发者可以向第三方发送哪些数据推出了全新规则。为确保开发者可以证明其操作符合 Apple 隐私规定,Adjust SDK 针对 授权 和 未授权 用户使用两个相互独立的终端。
默认情况下,Adjust SDK 使用analytics.adjust.com
终端向 Adjust 服务器发送有限的数据集,用于 概率模型 。该终端 不会 接收以下信息:
idfa
: The device ID For Advertisers (IDFA).started_at
: The device startup time.
只有用户授予 ATT 许可时,Adjust SDK 才可访问 idfa 和 started_at 属性用于 精确归因 并向consent.adjust.com
发送完整 payload。
两个终端均适用于所有URL 策略。
URL 策略 | 未授权终端 | 授权终端 |
---|---|---|
ADJDataResidencyEU | analytics.eu.adjust.com | consent.eu.adjust.com |
ADJDataResidencyTR | analytics.tr.adjust.com | consent.tr.adjust.com |
ADJDataResidencyUS | analytics.us.adjust.com | consent.us.adjust.com |
ADJUrlStrategyChina | analytics.adjust.world | consent.adjust.world |
ADJUrlStrategyCn | analytics.adjust.cn | consent.adjust.cn |
ADJUrlStrategyIndia | analytics.adjust.net.in | consent.adjust.net.in |