2021/10 時点
2021/10 に Android 12 が正式リリースされましたが、こちら Adverting ID に関する変更はありません。
Google の説明によると下記のような変更は 2022 の早期にやります。というアナウンスのみです
不気味なのは、これをサーバー側のスイッチもしくはパッチか何かで当てられると、自動的に適用され、ある日突然取れなくなるということです。
ですので、2021のうちに準備しておくのがよいかと思います。
2021/11
実機の挙動の変更が確認されました。Googleの ADIDの説明によると isLimitAdTrackingEnabled が true なら
00000000-0000-0000-0000-000000000000 が返される
Google の設定より、ADIDの削除というメニューが表示された (Pixel 4aの場合)
現在の仕様
- isLimitAdTrackingEnabled が true でも ADID はとれる (なんというざる)
- ユーザーのデバイスOS、アプリケーションのコンパイルSDKのバージョンに関わらず取得可能
- Android 12 のデバイスで isLimitAdTrackingEnabled が true の場合 00000000-0000-0000-0000-000000000000 が
返ってくる
試しにやってみた結果 (当方が開発しているSDKとアプリの関係も入っています)
デバイス | SDKコンパイル/ツールバージョン | アプリのコンパイル/ツールバージョン | パーミッション | トラッキング設定 | ADID |
---|---|---|---|---|---|
Android 12 エミュレータ | 29/30.0.2 | 31/30.0.0 | なし | デフォルト | 取得可能 |
Android 12 エミュレータ | 29/30.0.2 | 31/30.0.0 | なし | Limit track | 取得可能 |
Android 8 実機 | 29/30.0.2 | 31/30.0.0 | なし | デフォルト | 取得可能 |
参考
Advertising ID
AdvertisingIdClient.Info
変更の概要
- Android 12の API(31) でアプリケーションをビルドした場合に適用される
- パーミッションの設定が必要 (レベルはノーマルなのでダイアログの表示はなく、インストール/アップデート時に表示される、これを許可しないとそもそもインストール/アップデートできない)
- パーミッションがない場合 "00000000-0000-0000-0000-000000000000" になる
アプリケーション開発をされている皆様にはこちらの方法で実装してADID の設定を許可します。
- AndroidManifest.xml を設定
- 依存関係に com.google.android.gms:play-services-ads-identifier:17.1.0 以上を入れておく
AndroidManifest.xml
パーミッションが必要とのことでパーミッション設定を AndroidManifest.xmlに入れます。
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
Google Play ADS Identifier のバージョンを 17.1.0 以上にする
現在の最新版は 17.1.0 です
これを入れると、このaarに勝手にパーミッションが含まれている
アプリケーションを開発をしているが、入れているSDKの設定を入れたくない
アプリケーションの仕様上どうしてもこのパーミッションを取り入れたくない場合、アプリケーションの設定次第で打ち消すことが
可能です。以下のように設定します。
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
tools:node="remove" によりSDKなどの設定を打ち消します。
SDKなどを開発する場合の設定について
当方、SDKの開発をしていますが、SDKの場合、以下の2つの方法が取れます
- SDKのビルドにパーミッションを入れておく(AndroidManifest.xml)
- 依存関係に com.google.android.gms:play-services-ads-identifier:17.1.0 以上を入れておく
1.は単純に該当のSDKを入れたら自動的にAndroidManifest.xml がアプリケーションのそれとマージされます
2. は依存関係で 17.1.0 のバージョン以上には、AndroidManifest.xml に自動的に入っているので1同様
マージされます (入っているかどうかはデコンパイルツールで確認済)
ちなみにSDKのコンパイルバージョンが 31 でなくても、このパーミッションの設定を入れることは可能です。