はじめに
ある日、Google Play Consoleで以下のような広告 IDに関する申告を求められました
Android 13(API 33)で広告 ID の変更が行われました
Android 13 以降をターゲットとし、広告 ID を使用しているアプリについては、アプリ マニフェストで com.google.android.gms.permission.AD_ID 権限を宣言する必要があります。この権限が含まれていないと広告 ID がゼロにリセットされ、ID にアクセスしようとすると ID ではなくゼロの文字列が返されます。
で、これが一体何をすればいいのかわからなかったので、対応方法をご紹介します。
前提
・対象となるアプリはアプリ内に広告を表示していてAndroid13以降もターゲットにしているアプリです
・権限が宣言されていない場合
「権限が宣言されていない場合」とは?
日本語が難しいですが、、、
AndroidアプリはAndroidManifest.xml
というファイルがあり、このファイルはアプリに関する重要な情報を Android ビルドツール、Android オペレーティング システム、Google Play に対して説明するものです。
「重要な情報」には「権限の宣言」が含まれます!
Android アプリは、プライベートなユーザーデータ(連絡先や SMS など)や特定のシステム機能(カメラやインターネット アクセス)にアクセスするためのパーミッションをリクエストする必要があります。 それぞれのパーミッションは一意のラベルで識別されます。
「広告 IDを使用しますよ〜」という宣言がされている場合は、今回のような対応は不要という事です
どうすれば権限が宣言されているか確認できるのか?
AndroidManifest.xml
ファイルを見るだけでわかるかと思いきや、そうじゃない場合もあるようです。。。
Google Mobile Ads SDK(play-services-ads)など、一部の SDK では、SDK のライブラリ マニフェストですでにこの権限を宣言している可能性があります。アプリがこれらの SDK を依存関係として使用している場合は、アプリのメイン マニフェストで権限を明示的に宣言していなくても、デフォルトで、SDK のライブラリ マニフェストの AD_ID 権限がアプリのメイン マニフェストと統合されます。
https://support.google.com/googleplay/android-developer/answer/6048248?hl=ja
なので確認する確実な方法はGoogle Play Consoleのビルド情報?を見る事です!
(AdMobを使ってるならデフォルトでcom.google.android.gms.permission.AD_ID
は宣言されてるので対応不要かと)
「権限」の部分を見てもcom.google.android.gms.permission.AD_ID
の表示がありません。。
つまり権限の宣言ができていない、という事ですね
どうやって権限を宣言するか?
AndroidManifest.xml
ファイルを以下のように編集します。
<manifest>
<!-- 省略 -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
</manifest>
これで再度ビルドしてGoogle Play Consoleにアップロードすると👇のようにcom.google.android.gms.permission.AD_ID
が追加されています。
参考