【 IDFA 】App Tracking Transparency の許可設定状況を手軽に調査する方法【iOS/Unity】

iPhone

iOS14からはアプリで IDFA を使うためにポップアップからApp Tracking Transparencyを有効化してもらう必要があります。ただ、全世界で9割近くこの要求が拒否設定にされているそうです。

自分のアプリがどれくらい許可設定されているかがわかれば、ポップアップの文言の改善が必要かどうか、といった指標に使うことができます。今回はその調べ方をご紹介します。

なお、ご紹介する調査方法で取得できるデータはざっくりとしたものになりますので、ご承知おきください。




開発環境

  • Unity 2019.4.18f1
  • Xcode 12.4
  • iOS 14.4
  • Admob(広告IDを指定して広告表示できるようなものであればAdmobでなくてもOK)

どのような流れでATT許可設定の割合を調査するか?

調査には広告サービスのサマリレポートを利用します。広告ID単位で表示回数やアクセス数が確認できれば、サービス事業者は特に何でも問題ありません。

iOSはATTがユーザーに許可されると、 IDFA 値をアプリから取得することができるようになります。逆に許可されなければIDFA値はアプリから取得することができません。

それを利用して、もしIDFAが取得できれば広告ID:Aを、もしIDFAが取得できなれけば広告ID:Bといった具合に表示する広告IDを分けます。

そして、広告サービスから定期的に上がってくるのレポートの広告IDのリクエスト回数や表示回数を比較して、どの程度ATTが有効化されているのかを調べます。

ただ、ユーザーや端末は特定できない情報なので、あくまで全体の表示回数に対する割合のみしか知るのことはできません。

とはいえ、1端末に対して、1日1回限定でATT有効、無効で広告IDを変えて表示すれば、日単位でどの程度のユーザー数の割合をある程度正確に知ることができまし、工夫次第で有益なデータを取得することができます。

IDFA値をiOS ネイティブコードで取得する

IDFAの値は以下のコードで取得します。取得するのはユーザーがATTの許可設定を終えた後となるタイミングが望ましいです。

iOS Nativeのコードから。

extern "C" const char * _getIDFA() {
    if (@available(iOS 14,*)) {
        ASIdentifierManager *identifierManager = [ASIdentifierManager sharedManager];
            if ([identifierManager isAdvertisingTrackingEnabled]) {
                NSLog(@"[idfa] isAdvertisingTrackingEnabled enabled");
            } else {
                NSLog(@"[idfa] isAdvertisingTrackingEnabled disabled");
            }
            NSString *idfa = identifierManager.advertisingIdentifier.UUIDString;
            NSLog(@"[idfa] %@", idfa);
        return strdup([idfa UTF8String]);

    } else{
        return NULL;
    }
}

続いてUnityのコード。Start()でATT許可設定を要求してGetIDFA()でIDFAを取得、表示します。

    void Start()
    {
        _requestIDFA();
    }
    void GetIDFA()
    {
        string str = _getIDFA();
        Debug.Log(str);
    }

もしATTが許可設定されていない場合はIDFA値は”00000000-0000-0000-0000-000000000000″となり、許可設定されている場合はデバイス固有のIDFA値を取得することができます。

ATTのリクエストについての詳細はこちらの記事にまとめております。

取得したIDFA値で表示する広告ユニットを切り替える

前のコードで取得したIDFAが正しいIDFAかどうかを比較します。比較にはEqualsなどを用いるとよいかと思います。

void GetIDFA()
    {
        string str = _getIDFA();
        if(str.Equals("00000000-0000-0000-0000-000000000000")) {
            /* ATTは有効でない */
        } else {
            /* ATTは有効 */
        }
    }

正しいIDFA値かどうかは文字列”00000000-0000-0000-0000-000000000000″と等しいかどうかで判断します。もし、取得したIDFAが”00000000-0000-0000-0000-000000000000″の時はATTが無効なので、ATT無効の広告IDを使って、広告を表示するようにします。

一方、取得したIDFAが”00000000-0000-0000-0000-000000000000″でない時はATTが有効なので、ATT有効の広告IDを使って、広告を表示するようにします。

このようにIDFA値で広告IDを変えて広告表示するよにします。

広告ネットワークのレポートでATT許可設定の状況を調べる

IDFAで広告IDを切り替える仕込みを入れたアプリをリリースしたら、その効果を検証します。

Admobを例に説明しますが、先ほど説明した通り、同じようなレポートが取得できるサービスであれば問題ありません。

まず、左のメニューからレポートを選択します。

レポートを選択

レポートの種類選択が表示されるので、AdMobネットワークレポートを選択。

AdMobネットワークレポートを選択

レポートが表示されるので、広告ユニットとアプリを選んでフィルタをかけると以下のように広告ユニット単位でリクエスト数や表示回数を確認することができます。

ATT ONOFFそれぞれリクエスト回数を確認できる

このように広告ユニットを利用して間接的にATT有効無効の割合を調査することができます。

おわりに

今回はApp Tracking Transparencyの設定状況を間接的にではありますが、確認する方法をご紹介しました。

もちろんデータをネットワークで通信してサーバーに保存する類のアプリであれば、同様の機能をより簡素で正確に残すことができるかもしれません。

しかしながら、アプリ単体でネットワーク機能がない場合でも、今回ご紹介した手法を使えば簡単にアプリから情報を取得することができます。

もしATT有効設定の割合があまりに少ないのでポップアップの説明文言を見直すなど、アプリの改善にご利用いただければと思います。

ただ、目的に逸脱した使い方をするような場合はプライバシーポリシーへの記載が必要になりますのでご注意ください。

コメント

タイトルとURLをコピーしました