adjust-icon

设置 App Tracking Transparency

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

授权状态

ATT 授权包装器

方法签名
static Future<num> requestTrackingAuthorizationWithCompletionHandler() async

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

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

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

if (Platform.isIOS) {
Adjust.requestTrackingAuthorizationWithCompletionHandler().then((status) {
switch (status) {
case 0:
// ATTrackingManagerAuthorizationStatusNotDetermined case
break;
case 1:
// ATTrackingManagerAuthorizationStatusRestricted case
break;
case 2:
// ATTrackingManagerAuthorizationStatusDenied case
break;
case 3:
// ATTrackingManagerAuthorizationStatusAuthorized case
break;
}
});
}

示例

该示例展示了当用户与弹窗交互时,我们如何记录一个人类可读的用户授权状态描述。

main.dart
import 'package:adjust_sdk/adjust.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
initPlatformState() async {
AdjustConfig config =
new AdjustConfig('{YourAppToken}', AdjustEnvironment.sandbox);
config.logLevel = AdjustLogLevel.verbose;
Adjust.requestTrackingAuthorizationWithCompletionHandler().then((status) {
print('[Adjust]: Authorization status update!');
switch (status) {
case 0:
print(
'The user has not responded to the access prompt yet.');
break;
case 1:
print(
'Access to app-related data is blocked at the device level.');
break;
case 2:
print(
'The user has denied access to app-related data for device measurement.');
break;
case 3:
print(
'The user has approved access to app-related data for device measurement.');
break;
}
});
Adjust.start(config);
}

了解当前授权状态

方法签名
static Future<int> getAppTrackingAuthorizationStatus() async

您可以随时读取用户当前授权状态。调用 getAppTrackingAuthorizationStatus 方法来以 整数 形式返回授权状态代码。

Adjust.getAppTrackingAuthorizationStatus();

示例

该示例展示了如何收集用户授权状态并将其转化为 String。我们会为该信息指定一个名为 authorizationStatus 的变量,并将其作为会话合作伙伴参数使用 "status" key 传送。

String authorizationStatus = Convert.ToString(Adjust.getAppTrackingAuthorizationStatus());
Adjust.addSessionPartnerParameter("status", authorizationStatus);

查看授权状态变化

方法签名
static void checkForNewAttStatus()

如果使用自定义 ATT 弹窗,那么您需要告知 Adjust SDK 用户的授权状态。调用 checkForNewAttStatus 方法,以向 Adjust 服务器发送授权状态。

Adjust.checkForNewAttStatus();

自定义弹窗时机

属性声明
num? attConsentWaitingInterval;

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

AdjustConfig adjustConfig = new AdjustConfig('{YourAppToken}', AdjustEnvironment.Sandbox);
//...
adjustConfig.attConsentWaitingInterval = 30;
//...
Adjust.start(adjustConfig);