adjust-icon

设置 App Tracking Transparency

如果您要记录设备的广告主 ID (即 IDFA),需要先展示弹窗获得用户的授权。要达到这个目的,您需要在应用中添加 Apple 的 App Tracking Transparency (ATT) 框架。Adjust SDK 会存储用户的授权状态并在每次请求中将该信息发送至 Adjust 服务器。

授权状态

状态代码描述
ATTrackingManagerAuthorizationStatusNotDetermined0用户尚未对访问权限请求弹窗做出响应
ATTrackingManagerAuthorizationStatusRestricted1用户已在设备层级禁止应用相关数据访问
ATTrackingManagerAuthorizationStatusDenied2用户已拒绝授予可用于设备监测的应用相关数据访问权限
ATTrackingManagerAuthorizationStatusAuthorized3用户已授予可用于设备监测的应用相关数据访问权限

如果 SDK 无法获取 ATT 状态,则会返回-1值。

Adjust SDK 包含 Apple requestTrackingAuthorizationWithCompletionHandler 方法的包装器。如果您不想对 ATT 弹窗进行自定义,则可以使用这一包装器。

用户对授权窗口做出响应时,回传方法就会被触发。该方法会将用户的授权状态代码发送至 Adjust 服务器。您可以在回传函数中定义每种状态代码的响应。

您必须设定跟踪请求窗口中显示的文本。为此,请将文本加入 Info.plist 文件中的 NSUserTrackingUsageDescription key。

Adjust2dx::requestAppTrackingAuthorization([] (int status) {
switch (status) {
case 0:
// ATTrackingManagerAuthorizationStatusNotDetermined case
break;
case 1:
// ATTrackingManagerAuthorizationStatusRestricted case
break;
case 2:
// ATTrackingManagerAuthorizationStatusDenied case
break;
case 3:
// ATTrackingManagerAuthorizationStatusAuthorized case
break;
}
});

自定义弹窗时机

如果您的应用包含新手引导流程或教程,那么最好在用户完成新手引导流程或教程后再发送用户的 ATT 许可状态。为此,您可以在AdjustConfig2dx实例上调用setAttConsentWaitingInterval 方法,将数据发送延迟最多 360 秒 ,让用户有足够的时间完成初始用户引导。延时结束或用户设置许可状态后,SDK 会将在延迟时间内记录的所有信息以及用户许可状态发送给 Adjust 服务器。

如果用户在延时结束前关闭应用或在选择授权状态前关闭应用,那么用户重新打开应用时延时将重新开始计时。

AdjustConfig2dx adjustConfig = AdjustConfig2dx(appToken, environment);
adjustConfig.setAttConsentWaitingInterval(30);
Adjust2dx::initSdk(adjustConfig);

获取当前授权状态

您可以随时读取用户当前授权状态。调用 Adjust2dx::getAppTrackingAuthorizationStatus() 方法来以 int 形式返回授权状态代码。

Adjust2dx::getAppTrackingAuthorizationStatus();