広告識別子(IDFA)を記録したい場合は、ユーザーの許諾を得るためのプロンプトを表示する必要があります。これを行うには、アプリにAppleのApp Tracking Transparency(ATT)frameworkを組み込む必要があります。Adjust SDKはユーザーの許諾状況を保存し、リクエストごとにAdjustサーバーに送信します。
承認ステータス
ステータス(Status) | コード | 説明 |
---|---|---|
ATTrackingManagerAuthorizationStatusNotDetermined | 0 | ユーザーがアクセスプロンプトに応答していない |
ATTrackingManagerAuthorizationStatusRestricted | 1 | アプリ関連データへのアクセスがデバイスレベルでブロックされている |
ATTrackingManagerAuthorizationStatusDenied | 2 | ユーザーがデバイス計測によるアプリ関連データへのアクセスを拒否 |
ATTrackingManagerAuthorizationStatusAuthorized | 3 | ユーザーがデバイス計測によるアプリ関連データへのアクセスを承認 |
ATT承認ラッパー
static Future<num> requestAppTrackingAuthorization() async
Adjust SDKには、AppleのrequestTrackingAuthorizationWithCompletionHandler
メソッドのラッパーが含まれています。ATTプロンプトをカスタマイズしない場合は、このラッパーを使用することができます。
コールバックメソッドは、ユーザーが同意ダイアログに応答した時にトリガーされ、ユーザーの同意ステータスコードをAdjustサーバーに送信します。コールバック関数内で各ステータスコードに対するレスポンスを定義することができます。
ATTリクエストダイアログのテキスト内容を指定する必要があります。これを行うには、Info.plist
ファイルでNSUserTrackingUsageDescription
キーにテキストを追加してください。
if (Platform.isIOS) { Adjust.requestAppTrackingAuthorization().then((status) { switch (status) { case 0: // ATTrackingManagerAuthorizationStatusNotDetermined case break; case 1: // ATTrackingManagerAuthorizationStatusRestricted case break; case 2: // ATTrackingManagerAuthorizationStatusDenied case break; case 3: // ATTrackingManagerAuthorizationStatusAuthorized case break; } });}
例
この例では、ユーザーがプロンプトと対話したときに、ユーザーの認証状態について人間が読み取れる説明をログに記録する方法を示しています。
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!'); switch (status) { 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; } });}
現在の承認ステータスを取得
static Future<int> getAppTrackingAuthorizationStatus() async
ユーザーの現在の認証ステータスはいつでも取得することができます。getAppTrackingAuthorizationStatus
メソッドを呼び出し、 整数 で認証ステータスコードを返してください。
Adjust.getAppTrackingAuthorizationStatus().then((status) { // status gives you information about ATT consent value});
例
この例では、ユーザーの認証ステータスを収集し、String
に変換する方法を示しています。この情報はauthorizationStatus
という変数に割り当てられ、"status"
というキーでセッション パートナー パラメーターとしてパスされます。
String authorizationStatus = Convert.ToString(Adjust.getAppTrackingAuthorizationStatus());Adjust.addSessionPartnerParameter("status", authorizationStatus);
承認ステータスの変更を確認する
static void checkForNewAttStatus()
カスタムATTプロンプトを使用する場合、ユーザーの認証ステータスに変更があった場合、Adjust SDKに通知する必要があります。checkForNewAttStatus
メソッドを呼び出し、Adjustサーバーに認証ステータスを送信してください。
Adjust.checkForNewAttStatus();
プロンプトのタイミングをカスタム設定
num? attConsentWaitingInterval;
アプリにオンボーディングプロセスまたはチュートリアルが含まれる場合、ユーザーがこのプロセスを完了するまで、ユーザーのATT同意ステータスの送信を遅らせたい場合があります。これを行うには、attConsentWaitingInterval
プロパティを設定して、データの送信を 最大360秒 遅延させ、ユーザーに最初のオンボーディングを完了する時間を与えることができます。タイムアウトが終了した後、またはユーザーが同意ステータスを設定した後に、SDKはユーザーの同意ステータスと共に遅延中に記録した全ての情報をAdjustのサーバーに送信します。
AdjustConfig adjustConfig = new AdjustConfig('{YourAppToken}', AdjustEnvironment.sandbox);//...adjustConfig.attConsentWaitingInterval = 30;//...Adjust.initSdk(adjustConfig);