hyoromoのブログ

iOS/AndroidもしくはUnityネタを書いています

iOS14の広告トラッキング許諾に対応した話

f:id:hyoromo:20201007011020j:plain
iOS14から広告でトラッキング機能を使うには許諾制となりました。
と、急に言われても対応出来ないという事で対応必須になるのは2021年に先送りされましたが...

iOS14から新たに追加されたApp Tracking TransparencySKAdNetworkを使った新しい方法で行う必要があります。
音ゲーレーニング」アプリで対応してApple審査にも通過したので、通過した1事例として書き残しておきます。


まずはそもそも広告トラッキングの許諾制とはなんぞや。という話を軽く書いておきます。知っている人は飛ばしてください。

利用AdNetworkサービスの確認

まずは使用しているアプリで使用しているAdNetworkサービスが何なのかを確認する必要があります。
今回対応したアプリでは以下が対象でした。


それぞれiOS14対応が成されているかの確認をし、対応されていればSDKの更新を行ってください。
あと必ずiOS14対応方法の資料があるため、そちらの情報も確認しておきます。

SKAdNetworkの設定

AdNetwork毎にSKAdNetworkIdentifierが用意されています。
利用するAdNetwork分だけ、このIDをInfo.plistへ追加する必要があります。
必ず各AdNetworkのiOS14対応方法に追加方法及びIDが掲載されています。最新の対応方法を確認してください。

AdMob/nendを追加すると以下のようになりました*1
f:id:hyoromo:20201006233834j:plain

App Tracking Transparencyのトラッキング許諾

許諾ダイアログ上のメッセージを登録

プッシュ通知/カメラロールへのアクセスと同じく、システムダイアログを表示してユーザーに許諾を得ます。
なので、他と同じようInfo.plistへ許諾時のメッセージを登録する必要があります。
f:id:hyoromo:20201006234514j:plain

もしローカライズ対応を行っている場合はInfoPlist.stringsにてNSUserTrackingUsageDescriptionをkeyとして各言語に合わせた文章を設定します。

許諾ダイアログの表示

AdMobのiOS14対応にコードがあるので、以下に掲載されているコードをコピペしてください。
developers.google.com

ここまでの対応でアプリを起動すると以下のような許諾ダイアログが表示されるようになったかと思います。
f:id:hyoromo:20201007005945j:plain:w300

雑に対応するならこれで終了です。
ですが突然許諾ダイアログの2択を迫った場合、ユーザーは意味が分からないので不許可にする人が多いと思われます。
なので、ワンクッション置く事を各AdNetwork会社がオススメしてきています。

許諾ダイアログ前のワンクッションの置き方

現状での方法は2択あります。

  1. 独自ダイアログを表示する
  2. AdMobを利用している場合はファンディング チョイスを使って表示する

ファンディングチョイスはAdMob管理画面の「プライバシーとメッセージ」から移動出来ます。
そこでIDFAメッセージとして言語別に作成でき、作成時にはデフォルトで以下のように定型文を設定してくれます*2。文字と色は好きに変更可能です。
f:id:hyoromo:20201007000054j:plain

仕組みとしては管理画面上で登録したフォームを、アプリで使いたい時にフォームDLして表示するというものです。
ユーザー動向を見つつWeb上で文章を変更したかったり、独自に作成するのが面倒な人には良いかもしれません。
ただ、追加可能な言語はまだ少なく(まだ繁体字が無かった)。これを使うのに別途ライブラリやフォーム取得処理を書くのが手間なため、今回は導入を見送りました。

なので、「音ゲーレーニング」アプリでは独自ダイアログを表示する対応を行っています。

音ゲーレーニング」アプリでの導入事例

※単に1例であるため、同対応をしてリジェクトを受けても責任は持てません。厳しさはレビュワーによったり、時期によって変化していくかもしれません

アプリの都合上、2回目の起動以降に広告トラッキング許諾を行うよう実装しました。
ざっくりとした遷移は以下のようになります。
f:id:hyoromo:20201024172115j:plain

上図に記載したアルファベットを元に、それぞれ行う意味について説明していきます。

(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をコールしても何も表示されない事に注意してください。即結果が返ってくるだけです。

(D) トラッキング不許可時のケア

(C) の設定をアプリ上で変更する事は出来ません。
設定アプリでしか変更出来ないため、その事をユーザーに伝えておきます。
f:id:hyoromo:20201007004324j:plain:w300

これもワンクッション同様に対応必須のものではありません。
ですがトラッキング不許可により変な広告が出続けてしまう不快感をユーザーに与えてしまった場合、それに対応するための手段を事前に伝えておくのは意味があることだと思います。

設定箇所は以下の2箇所になります。

  • 設定アプリ > プライバシー > トラッキング
  • 設定アプリ > (自分のアプリ)

対応したアプリの紹介

広告トラッキング許諾の対応を入れた「音ゲーレーニング」アプリ v2.0.0 はAppStoreにて公開中です。
iOS14端末にて2回目の起動から表示されますので、実機での流れを確認してみたい方はダウンロードしてみてください*4

音ゲートレーニング

音ゲートレーニング

  • hiroki kawakami
  • ゲーム
  • 無料
apps.apple.com

いつ対応すべきなのか

個人的見解ですが対応時期は今じゃないと思います。
他アプリがほぼ対応していない状況下で対応すると、このアプリだけユーザーから見たらトラッキングしようとする怪しいアプリに見えるんじゃかいかと。
冒頭に書いたように対応必須までの猶予があるため、それまでに審査に通過しておき周囲に合わせて手動リリースするのがベターじゃないかなと。

では何故「音ゲーレーニング」アプリを対応したか?それはこのパターンで審査通過するか早く試してみたかったから...

更新履歴

  • 2020/10/24
    v2.0.0リリースしたフィードバックを元に「「音ゲーレーニング」アプリでの導入事例」内容の(A)を中心に内容更新

*1:2020/10/06時点での追加方法です

*2:なお、"Sound game training" はAdMob上での広告表示対象のアプリ名

*3:ここで端末設定自体の見直しを要求するかはアナタのアプリ次第です

*4:Aはv2.0.0でのフィードバックを元に改善した挙動です。次回以降のバージョンから反映予定です