iOS14から広告でトラッキング機能を使うには許諾制となりました。
と、急に言われても対応出来ないという事で対応必須になるのは2021年に先送りされましたが...
iOS14から新たに追加されたApp Tracking TransparencyとSKAdNetworkを使った新しい方法で行う必要があります。
「音ゲートレーニング」アプリで対応してApple審査にも通過したので、通過した1事例として書き残しておきます。
まずはそもそも広告トラッキングの許諾制とはなんぞや。という話を軽く書いておきます。知っている人は飛ばしてください。
利用AdNetworkサービスの確認
まずは使用しているアプリで使用しているAdNetworkサービスが何なのかを確認する必要があります。
今回対応したアプリでは以下が対象でした。
それぞれiOS14対応が成されているかの確認をし、対応されていればSDKの更新を行ってください。
あと必ずiOS14対応方法の資料があるため、そちらの情報も確認しておきます。
SKAdNetworkの設定
AdNetwork毎にSKAdNetworkIdentifierが用意されています。
利用するAdNetwork分だけ、このIDをInfo.plistへ追加する必要があります。
必ず各AdNetworkのiOS14対応方法に追加方法及びIDが掲載されています。最新の対応方法を確認してください。
AdMob/nendを追加すると以下のようになりました*1。
App Tracking Transparencyのトラッキング許諾
許諾ダイアログ上のメッセージを登録
プッシュ通知/カメラロールへのアクセスと同じく、システムダイアログを表示してユーザーに許諾を得ます。
なので、他と同じようInfo.plistへ許諾時のメッセージを登録する必要があります。
もしローカライズ対応を行っている場合はInfoPlist.stringsにてNSUserTrackingUsageDescriptionをkeyとして各言語に合わせた文章を設定します。
許諾ダイアログの表示
AdMobのiOS14対応にコードがあるので、以下に掲載されているコードをコピペしてください。
developers.google.com
ここまでの対応でアプリを起動すると以下のような許諾ダイアログが表示されるようになったかと思います。
雑に対応するならこれで終了です。
ですが突然許諾ダイアログの2択を迫った場合、ユーザーは意味が分からないので不許可にする人が多いと思われます。
なので、ワンクッション置く事を各AdNetwork会社がオススメしてきています。
許諾ダイアログ前のワンクッションの置き方
現状での方法は2択あります。
- 独自ダイアログを表示する
- AdMobを利用している場合はファンディング チョイスを使って表示する
ファンディングチョイスはAdMob管理画面の「プライバシーとメッセージ」から移動出来ます。
そこでIDFAメッセージとして言語別に作成でき、作成時にはデフォルトで以下のように定型文を設定してくれます*2。文字と色は好きに変更可能です。
仕組みとしては管理画面上で登録したフォームを、アプリで使いたい時にフォームDLして表示するというものです。
ユーザー動向を見つつWeb上で文章を変更したかったり、独自に作成するのが面倒な人には良いかもしれません。
ただ、追加可能な言語はまだ少なく(まだ繁体字が無かった)。これを使うのに別途ライブラリやフォーム取得処理を書くのが手間なため、今回は導入を見送りました。
「音ゲートレーニング」アプリでの導入事例
※単に1例であるため、同対応をしてリジェクトを受けても責任は持てません。厳しさはレビュワーによったり、時期によって変化していくかもしれません
アプリの都合上、2回目の起動以降に広告トラッキング許諾を行うよう実装しました。
ざっくりとした遷移は以下のようになります。
上図に記載したアルファベットを元に、それぞれ行う意味について説明していきます。
(A) 端末のトラッキング設定
「設定アプリ > プライバシー > トラッキング > Appからのトラッキング要求を許可」に、端末自体のトラッキング要求の許諾設定が存在します。
この設定がOFFだった場合はアプリ内で許諾ダイアログは表示出来ないため、(B)のワンクッションは表示すべきでは無いです*3。
これは ATTrackingManager.trackingAuthorizationStatus で判断出来ます。
ステータスの意味は以下のようになっています。
ステータス | 意味 |
---|---|
ATTrackingManagerAuthorizationStatusAuthorized | 許可 |
ATTrackingManagerAuthorizationStatusDenied | 不許可 |
ATTrackingManagerAuthorizationStatusRestricted | 制限あり |
ATTrackingManagerAuthorizationStatusNotDetermined | 未設定 |
つまり以下の条件でステータス判断が出来るので...
- 端末設定/アプリ毎の設定で不許可の場合はDenied
- 端末設定で許可されている & 未だ(C)を未選択の場合はNotDetermined
(B)以降の実行条件は以下のようにしました。
- 端末がiOS14以上
- ATTrackingManager.trackingAuthorizationStatusがATTrackingManagerAuthorizationStatusNotDetermined
(B) ワンクッション
これは先程説明した独自ダイアログを表示しています。
起動直後に文字を読む余裕が無い人向けに「あとで」ボタンも付けています。ここは1択でも良いと思います。
(C) トラッキング許諾
iOS APIを使って表示するトラッキング許諾ダイアログとなります。
前に説明したNSUserTrackingUsageDescriptionで登録したメッセージがここに表示されます。
ワンクッション置く場合はそちらの文章と重複し過ぎない方がいいのかもしれません。
許可/不許可のどちらが選択されたかは(A)で挙げた ATTrackingManagerAuthorizationStatus を確認すれば分かります。
許可された場合は現在表示中の広告をReloadします。これは必須ではありませんが、Reloadしないと現在表示中の広告には設定が適用されません。
なお、許可/不許可が選択されて以降はトラッキング許諾APIをコールしても何も表示されない事に注意してください。即結果が返ってくるだけです。
対応したアプリの紹介
広告トラッキング許諾の対応を入れた「音ゲートレーニング」アプリ v2.0.0 はAppStoreにて公開中です。
iOS14端末にて2回目の起動から表示されますので、実機での流れを確認してみたい方はダウンロードしてみてください*4。
いつ対応すべきなのか
個人的見解ですが対応時期は今じゃないと思います。
他アプリがほぼ対応していない状況下で対応すると、このアプリだけユーザーから見たらトラッキングしようとする怪しいアプリに見えるんじゃかいかと。
冒頭に書いたように対応必須までの猶予があるため、それまでに審査に通過しておき周囲に合わせて手動リリースするのがベターじゃないかなと。