【monaca】AppTrackingTransparencyの実装方法【IDFA対応】
こんにちは、Stacaの中の人です。
monacaで作ったアプリのAppTrackingTransparencyの対応ができたのでシェアします。
iOS14.5以降、admobなどの広告を出す場合はAppTrackingTransparencyの実装が必須となりました。
アプリに機能を追加してリリースしようとしても、AppTrackingTransparencyを実装していないことが理由でリジェクトされるという状況に陥ったので、仕方なく対応しました。
1. Appのプライバシーを登録
AppStoreConnectの「Appのプライバシー」で必要項目を登録します。
ここで登録した内容はAppStoreにも表示されます。
選択する項目はこのあたりのブログを参考にしました。
AdMob利用時の「Appのプライバシー」の入力方法虎の巻
2. GMA SDKをアップデート
App Tracking Transparencyを利用する前提となるGoogle Mobile Ads SDKのバージョンが「7.64.0」なので、Admob SDKをアップデートする必要があります。
これまで、monacaでAdmobSDKを使うために、以下の方法で導入していました。
monacaで作ったAdmobを組み込んだiOSアプリをリリースする方法について (2020年6月時点)
「WKWebView」環境で使うために、zipでSDKをダウンロードしてソースを差替えて、カスタムプラグインとしてmonacaにアップロードするという、複雑な手順が必要だったんですね。
でも、2021年6月現在、以下のcordovaプラグインをgithubから直接、導入すれば最新のAdmobSDKが利用できるようになりました。もちろん「WKWebView」環境にも対応しています。
Admob SDK
Admob Free
jarodms/cordova-plugin-admob-free
ありがとう、jarodmsさん。
3. そのまま審査へ ⇒ 当然リジェクト
とりあえず、AdmobSDKとAdmobFreeがアップデートできたので、その状態で審査へ。
当然、リジェクトですね。
Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing
要約すると「広告出してトラッキングするならApp Tracking Transparency を実装しろやゴルァ!」ということらしいです。
4. ATT フレームワークの実装
「App Tracking Transparencyを実装する方法」で検索するとSwiftやFlutter、Unityなどの実装方法は出てくるんですが、monacaでの実装方法についてはあまり情報がなく、ちょっと苦労しました。
とりあえず以下の方法で実装できました。
SKAdNetworkを有効にする
https://developers.google.com/admob/ios/ios14#skadnetwork
「config.xml」にSKAdNetworkItemsを全て追記します。
cordova-plugin-idfaの導入
chemerisuk/cordova-plugin-idfa
上記リンクから「cordova-plugin-idfa」をインポートします。
リンク先に書いてあるとおり、NSUserTrackingUsageDescriptionの定義と、ダイアログのメッセージをinfo.plistにmargeするよう「config.xml」に追記します。
あとはExamleに書いてあるjavascriptのソースをIDFA取得ダイアログを出したい場所に追記します。
IDFA取得ダイアログの前に事前説明
アプリ起動時にIDFA取得ダイアログを出すように実装しましたが、使っているユーザーから見ると突然、許可するかどうかを選択するダイアログが出てしまうことになります。
「許可」を押すと個人情報やアクセス履歴を抜かれるんじゃないかしらと、不安にさせてしまいそうなので、事前説明ダイアログを出すようにしました。
TwitterやAbemaTVなどの有名どころのアプリのメッセージを参考にして実装します。
事前説明ダイアログ
IDFA取得ダイアログ
ダイアログ中ほどの英語メッセージ「The identifier will be 〜」は「NSUserTrackingUsageDescription」の「stringタグ」で定義した文字列が表示されます。多言語化する方法もあると思いますが、調べるのも面倒だったのと、パッと見てそれほど気にならないので、そのままにしてます。
許可を押した場合のアプリ設定
IDFA取得ダイアログで「許可」を押した場合、アプリ設定の「トラッキングを許可」がONになります。
5. またもリジェクト、、、からの審査OK!
ようやく「App Tracking Transparency」が実装できたので審査へ。
しかし、またリジェクトでした。
Guideline 2.1 - Information Needed
「App Tracking Transparencyフレームワークが実装できているのは確認できたけれど、IDFA取得ダイアログがどのタイミングで出るか、教えろやゴルァ!」ということらしいです。
「アプリを初回起動したら出るやろがい!1回くらい、起動してみろやヴォケが!」と叫びたいのを我慢しつつ、メモ欄に以下を書いて再審査へ。
- About IDFA acquisition timing -
AppTrackingTransparency requests are displayed the first time you launch the app.
Thank you for your confirmation.
翌日、ようやく審査がとおって無事にアプリをリリースすることができました。
しかし毎度のことながら、cordovaとかフレームワークのアップデート対応は苦労しますね。
「ちょっとだけ機能を追加してアプリをリリースしよう!」と思っても、「各種アップデート対応してからじゃないとリリースできない」事態になり、「アップデート対応したら動かなくなった」 or 「審査に落ちるようになった」という無限ループ。。。あぁ、面倒くさい。

【monaca】AppTrackingTransparencyの実装方法【IDFA対応】 関連ページ
- 【個人スマホアプリ開発】公開しているアプリ<Staca>の紹介
- スマホアプリ開発で【monaca】を選んだ理由と実際に使ってみた感想
- 【アプリで稼ぎたい】個人開発のスマホアプリってどれくらい儲かるの?【無理ゲー】
- 【monaca】開発を効率化するために実践している4つのこと【Tips】
- 【monaca】アプリ公開前にこれだけはやっておこう!【あとで困ります】
- 【悲報】初めてアプリ課金が発生!喜んだのもつかの間【現実は厳しかった】
- 【障害】ローカルストレージの会員認証データが消えた【ごめんなさい】
- 【初心者向け】スマホアプリ開発の始め方【最短ルートでアプリ公開】
- 【祝】Stacaの会員数が5000人を突破しました【スマホアプリ開発】
- 【20代限定】未経験から3年で年収1000万の安定収入(+α)を得る方法【IT業界】
- 【障害】すべてのリアルタイム通信がエラーになってしまった【アプリ保守は面倒っす】
PR