【Unity】Easy Mobile Proを使って ATT(App Tracking Transparency)対応を行う

はじめに

この記事はUnityのアセット Easy Mobile Pro を利用してAdmobの広告導入を解説する記事です。

Easy Mobile Pro とは

Easy Mobile Proは広告、アプリ内購入、通知、共有などのモバイルゲームに必須とも呼ばれる機能を開発サポートを行ってくれるアセットです。

Easy Mobile Pro 導入の記事はこちら

rieveldtgames.net

ATT(App Tracking Transparency)対応とは

広告付きアプリ・ゲームをリリースする場合ほぼ必須となる対応です。Admobなどの広告機能はユーザーに合った広告を表示するために、個人端末の識別IDをもとにユーザーごとに最適化した広告配信を行おうとします。

しかし、「その識別ID も個人情報っちゃ個人情報なので、ユーザーの同意なしに広告最適化に使うのはダメ」と突然Appleが言い始めたため世界中の開発者が対応を求められることになりました。対応しないまま識別IDがわからないと個人最適化した広告を出せないので、「4才のこどもに政治の広告が出る」みたいな広告主も開発者もどっちも不幸になることが起こります。

対応自体は簡単なので、是非対応したいところです。下記のようなポップを出して許可を求めることになります。

環境

  • Unity
    • 2021.3.16f1
  • EASY MOBILE Pro
    • v2.19.0

準備

ATT機能を有効にする

Easy Mobile Pro パッケージ導入済みであればEasy Mobile の管理画面を起動できます。

管理画面の PRIVACY の項目をクリックします。

APP TRACKING の項目をOnにします。するとユーザーに表示する文言を入力できるようになるので、自分のアプリに合わせた文言を入力します。

これで準備完了です。あとはこの表示を行いたい場所にプログラムを記述します。

実装

ATT ダイアログを表示する

Easy Mobile を使っている場合専用のクラスとメソッドが用意されているので、表示したい場所に下記を記述します。

Privacy.AppTrackingManager.RequestTrackingAuthorization(status =>
{
    Debug.Log("Request Tracking Completed with status: " + status);
});

このコールバック関数はユーザーが入力したときに呼ばれるので、安全に処理するのであればユーザーの入力を待った方が良いです。 超簡単にメソッド化すると、下記のように書くことができます。この関数を呼び出しを await しておけば確実にユーザーの入力を待って、 次の処理を行うことができます。不足の事態を考慮するのであれば、さらにタイムアウト秒数なども入れても良いかもしれません。

/// <summary>
/// ATTリクエスト
/// </summary>
private bool attRequestesult = false;
public async UniTask RequestTrackingAuthorizationAsync(CancellationToken token)
{
    token.ThrowIfCancellationRequested();

    attRequestesult = false;
    Privacy.AppTrackingManager.RequestTrackingAuthorization(status =>
    {
        Debug.Log("Request Tracking Completed with status: " + status);
        attRequestesult = true;
    });

    await UniTask.WaitUntil(() => attRequestesult, PlayerLoopTiming.Update, cancellationToken: token);
}

表示の確認

iOSアプリをビルドして確認する

iOS かつ 実機 でないと実際の表示確認はできません。アプリをビルドしましょう。うまく実装できていれば下記のようなiOSのシステムポップアップが出てくれるはずです。