ATT(App Tracking Transparency)の対応方法
iOS 14.5 以降、利用者を「トラッキング」するアプリは、起動後に表示される許可ダイアログで利用者の同意を得る必要があります。広告 SDK を入れた個人開発のゲームで、つまずきやすいポイントをまとめました。
トラッキングとは
Apple の定義では、トラッキングとは自分のアプリで集めた利用者や端末のデータを、他社のアプリ・Webサイトなどで集められたデータと結び付けて、ターゲティング広告や広告効果の測定に使うことです。データブローカーにデータを提供することもトラッキングに含まれます。
トラッキングするには ATT で利用者の許可を得る必要があり、許可がない場合、端末の広告識別子(IDFA)はすべて 0 の値になります。IDFA の代わりにメールアドレスのハッシュなど別の識別子を使ってトラッキングすることも認められていません。
ATT が必要かどうかの判断
| アプリの状態 | ATT |
|---|---|
| 広告 SDK でパーソナライズ広告を配信し、IDFA を使う | 必要 |
| 広告効果の測定のために、他社のデータと結び付けて利用者を識別する SDK を使う | 必要 |
| 広告を出さない。解析ツールは自分のアプリの改善のためだけに使う | 通常は不要 |
| 非パーソナライズ広告だけを配信し、IDFA を使わない | 通常は不要 |
| データを端末の中だけで結び付け、利用者を特定できる形で外に送らない | 不要(トラッキングに当たらない) |
組み込んだ SDK のコードも開発者の責任です。広告 SDK の多くは、許可があれば IDFA を使う作りになっているので、各社のドキュメントで iOS の設定方法を確認してください。
実装の手順
-
Info.plist に利用目的の説明文を入れる
NSUserTrackingUsageDescriptionに、トラッキングの目的を利用者にわかる言葉で書きます。この文は許可ダイアログに表示されます。入れ忘れたまま許可をリクエストすると、アプリが落ちる原因になります。例:「あなたの興味に合った広告を表示するために使用します」 -
適切なタイミングで許可をリクエストする
ATTrackingManager.requestTrackingAuthorizationを、アプリが前面に表示されている状態で呼び出します。ダイアログは一度しか表示されず、2回目以降は前回の結果が返ります。広告 SDK の初期化は、許可の結果が出てから行うのが一般的です。状態は「未確認」「制限」「拒否」「許可」の4種類です。許可されなかった場合も、アプリは普段どおり遊べるようにします。
-
必要なら、事前に説明画面を出す
システムのダイアログの前に、なぜ許可をお願いするのかを説明する画面を出すことは認められています。ただし、利用者をだましたり、無理に同意させたりする作りは認められていません。Google AdMob を使っている場合は、AdMob の「プライバシーとメッセージ」で、ATT の前に表示する説明メッセージを作ることもできます。
-
App Store の「App のプライバシー」と合わせる
トラッキングに使うデータは、「App のプライバシー」で「トラッキングに使用」と申告します。ATT のダイアログを出しているのに申告がない、またはその逆だと、審査で指摘されることがあります。
審査で指摘されやすい点
- 許可しないと遊べない・報酬がもらえない作りはNGです。「許可したらコインをプレゼント」のような特典も認められていません(審査ガイドライン 5.1.2(i))。
- 許可を誘導する画面:説明画面で「許可しないと続行できない」ように見せたり、システムのダイアログに見せかけたりするのは避けましょう(5.1.1(iv))。
- 説明文の入れ忘れ:
NSUserTrackingUsageDescriptionがないとクラッシュし、リジェクトの原因になります。 - 申告との食い違い:「App のプライバシー」のトラッキングの申告と、実際の動作を一致させます。
- 許可されなかった利用者を、IDFA 以外の識別子で追跡することはできません。
プライバシーポリシーの質問に答えると、回答ガイドに ATT が必要かどうかの目安と、ストアでの申告方法が表示されます。
参考:ユーザーのプライバシーとデータの使用(Apple) / App Tracking Transparency(Apple Developer Documentation) / App Store Review ガイドライン
次のガイド ✅ ストア審査で指摘されやすいポイント →