adjust-icon

Set up App Tracking Transparency

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

授权状态

StatusCodeDescription
ATTrackingManagerAuthorizationStatusNotDetermined0The user hasn’t responded to the access prompt yet
ATTrackingManagerAuthorizationStatusRestricted1Access to app-related data is blocked at the device level
ATTrackingManagerAuthorizationStatusDenied2The user has denied access to app-related data for device measurement
ATTrackingManagerAuthorizationStatusAuthorized3The user has approved access to app-related data for device measurement

ATT 授权包装器

Method signature
static Future<num> requestAppTrackingAuthorization() async

The Adjust SDK contains a wrapper around Apple’s requestTrackingAuthorizationWithCompletionHandler method. You can use this wrapper if you don’t want to customize the ATT prompt.

The callback method triggers when your user responds to the consent dialog. This method sends the user’s consent status code to Adjust’s servers. You can define responses to each status code within the callback function.

You must specify text content for the ATT request dialog. To do this, add your text to the NSUserTrackingUsageDescription key in your Info.plist file.

if (Platform.isIOS) {
Adjust.requestAppTrackingAuthorization().then((status) {
final int statusInt = status.toInt();
switch (statusInt) {
case 0:
// ATTrackingManagerAuthorizationStatusNotDetermined case
break;
case 1:
// ATTrackingManagerAuthorizationStatusRestricted case
break;
case 2:
// ATTrackingManagerAuthorizationStatusDenied case
break;
case 3:
// ATTrackingManagerAuthorizationStatusAuthorized case
break;
}
});
}

示例

This example shows how to log a human-readable description of the user’s authorization status when they interact with a prompt.

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.initSdk(config);
Adjust.requestAppTrackingAuthorization().then((status) {
print('[Adjust]: Authorization status update!');
final int statusInt = status.toInt();
switch (statusInt) {
case 0:
print(
'[Adjust]: Authorization status update: ATTrackingManagerAuthorizationStatusNotDetermined');
break;
case 1:
print(
'[Adjust]: Authorization status update: ATTrackingManagerAuthorizationStatusRestricted');
break;
case 2:
print(
'[Adjust]: Authorization status update: ATTrackingManagerAuthorizationStatusDenied');
break;
case 3:
print(
'[Adjust]: Authorization status update: ATTrackingManagerAuthorizationStatusAuthorized');
break;
}
});
}

获取当前授权状态

Method signature
static Future<int> getAppTrackingAuthorizationStatus() async

You can retrieve a user’s current authorization status at any time. Call the getAppTrackingAuthorizationStatus method to return the authorization status code as an integer .

Adjust.getAppTrackingAuthorizationStatus().then((status) {
// status gives you information about ATT consent value
});

示例

This example shows how to collect the user’s authorization status and convert it to a String. This information is assigned to a variable called authorizationStatus and passed as a session partner parameter with the key "status".

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

查看授权状态变化

Method signature
static void checkForNewAttStatus()

If you use a custom ATT prompt, you need to inform the Adjust SDK of changes to the user’s authorization status. Call the checkForNewAttStatus method to send the authorization status to Adjust’s servers.

Adjust.checkForNewAttStatus();

自定义弹窗时机

Property declaration
num? attConsentWaitingInterval;

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

AdjustConfig adjustConfig = new AdjustConfig('{YourAppToken}', AdjustEnvironment.sandbox);
adjustConfig.attConsentWaitingInterval = 30;
Adjust.initSdk(adjustConfig);

禁用 App Tracking Transparency

属性声明
bool? isAppTrackingTransparencyUsageEnabled;

若要禁用 Adjust SDK 与 AppTrackingTransparency.framework 的自动交互,您需要在 SDK 初始化之前将 AdjustConfig 实例上的 isAppTrackingTransparencyUsageEnabled 属性设为 false

AdjustConfig adjustConfig = new AdjustConfig('{YourAppToken}', AdjustEnvironment.sandbox);
adjustConfig.isAppTrackingTransparencyUsageEnabled = false;
Adjust.initSdk(adjustConfig);