スマホアプリ開発のブログ

【monaca】AppTrackingTransparencyの実装方法【IDFA対応】

こんにちは、オサムです。

 

monacaで作ったアプリのAppTrackingTransparencyの対応ができたのでシェアします。

 


 

iOS14.5以降、admobなどの広告を出す場合はAppTrackingTransparencyの実装が必須となりました。

 

アプリに機能を追加してリリースしようとしても、AppTrackingTransparencyを実装していないことが理由でリジェクトされるという状況に陥ったので、仕方なく対応しました。

 

1. Appのプライバシーを登録


AppStoreConnectの「Appのプライバシー」で必要項目を登録します。

 

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

jarodms/cordova-admob-sdk

Admob Free

jarodms/cordova-plugin-admob-free

 

ありがとう、jarodmsさん。

 

3. そのまま審査へ ⇒ 当然リジェクト


とりあえず、AdmobSDKとAdmobFreeがアップデートできたので、その状態で審査へ。

 

当然、リジェクトですね。

 

Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing

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事前説明ダイアログ

 

IDFA取得ダイアログ

IDFA取得ダイアログ

 

ダイアログ中ほどの英語メッセージ「The identifier will be 〜」は「NSUserTrackingUsageDescription」の「stringタグ」で定義した文字列が表示されます。多言語化する方法もあると思いますが、調べるのも面倒だったのと、パッと見てそれほど気にならないので、そのままにしてます。

 

許可を押した場合のアプリ設定

IDFA取得ダイアログで「許可」を押した場合、アプリ設定の「トラッキングを許可」がONになります。
許可を押した場合のアプリ設定

 

5. またもリジェクト、、、からの審査OK!


ようやく「App Tracking Transparency」が実装できたので審査へ。

 

しかし、またリジェクトでした。

Guideline 2.1 - Information Needed

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 「審査に落ちるようになった」という無限ループ。。。あぁ、面倒くさい。

 

 

 

PR




PR


HOME スマホアプリ開発ブログ SE入門講座 無料スクールまとめ フリーSE案件サイト SEおすすめ書籍