[Unity] [Adjust] iOS14以上と未満での広告ID取得時の動作の違い
IDFA の取得方法 (Unity)
ここでは、Unityが持つ UnityEngine.Application.RequestAdvertisingIdentifierAsync
と Unity SDK of Adjust™ を組み合わせた方法を紹介します。
Adjustを使わない場合は、「iOS 14 Advertisiong Support」パッケージを使うのが一般的です。
/// <summary>
/// IDFAの取得リクエスト (Private)
/// </summary>
public void RequestAdvertisingIdentifierAsync() {
// ユーザーに問い合わせる必要があるのか
// 0: ユーザーに質問する必要がある
// https://github.com/adjust/unity_sdk#get-current-authorisation-status
if (com.adjust.sdk.Adjust.getAppTrackingAuthorizationStatus() == 0)
{
// iOS14以降、ユーザーに問い合わせる必要がある
com.adjust.sdk.Adjust.requestTrackingAuthorizationWithCompletionHandler(
(int status) => {
RequestAdvertisingIdentifierImpl();
}
);
} else {
RequestAdvertisingIdentifierImpl();
}
}
/// <summary>
/// IDFAの取得リクエスト (Private)
/// </summary>
private void RequestAdvertisingIdentifierImpl() {
UnityEngine.Application.RequestAdvertisingIdentifierAsync(
delegateMethod: () =>{ (
string advertisingId,
bool trackingEnabled,
string error
) => {
if (string.IsNullOrEmpty(error)) {
// エラーなし
Debug.LogFormat(
"advertisingId {0}, trackingEnabled: {1}",
advertisingId,
trackingEnabled
);
} else {
// エラーあり
Debug.LogWarningFormat(
"advertisingId {0}, trackingEnabled: {1}, error: {2}",
advertisingId,
trackingEnabled,
error
);
}
}
}
);
}
説明
Adjust とは、スマートフォンアプリを最大限に売るための情報収集、解析する手助けをするサービスです。
その中の1つに、広告の効果を測定するというものがあります。
例えば、どこの広告からの流入ユーザーが、どのくらいゲームを遊んでくれたのか、といった計測をします。
その情報を取得する手段として、Appleソフトウェアの開発では「IDFA (Identifier for Advertisers)」を使用します。このIDは端末固有のものです。
また、ユーザーはこのIDの提供を拒否できます。
iOS14以降、IDFAを取得する際は必ずユーザーに許可を聞く動作が必須となりました。その特定のAPIを呼ばないままIDFAを取得しようとした場合、IDFAはユーザーが拒否したときと同じものを取得するようになっています。
Unity SDK of Adjust™ の場合、ATTrackingManager.trackingAuthorizationStatus
をラップした com.adjust.sdk.Adjust.getAppTrackingAuthorizationStatus()
を使用し、ステータスを取得できます。
また、ATTrackingManager.requestTrackingAuthorizationWithCompletionHandler:
をラップした com.adjust.sdk.Adjust.requestTrackingAuthorizationWithCompletionHandler
を使用して、ユーザーに問い合わせることもできます。
Discussion