広告ID(ADID)の概要
Androidアプリの開発では、広告ID(ADID)を取得してFirebaseや、サーバ等に送信することはよくあります。
サーバ等では、この取得した広告IDを活用して、ユーザに配信する広告を決定することができます。
詳しくは、PlayConsole>ヘルプ>広告をチェックしてください。
管理人
例えば、車好きの20代の人に、合わせた広告を配信できるといった感じでしょう。
注意すること
広告IDは、自由に取得して、好きなようにつかって良いわけではありません。
この 参考 収益化と広告>Android 広告 ID の使用>ユーザーの選択を優先デベロッパー ポリシー センター ページに記載もありますが、基本的にはユーザの意向を尊重する必要があります。
※詳しくは、公式ページを読み込んでください。
(本記事では、一切の責任を終えませんためです)
ユーザの設定例
では実際にアプリ側では何をすればよいのでしょうか?
これは、すごくシンプルです。
具体的には、ユーザーのAndroid端末の「広告IDをオプトアウト」する設定を考慮して、オプトアウト=つまり拒否されている場合は、広告IDを取得してはいけません。
これらを考慮して実装する必要があるので注意しましょう。
本来はできないべきではあると思いますが、これは仕様なので仕方ないです。
そのため、プログラマーがこれらの設定を考慮し、実装する必要がある。というのが現状です。
オプトアウト設定を考慮したソース例
広告IDの取得は非同期で行う必要があります。
参考 公式リファレンス公式リファレンス
private static boolean isLimitTrack; // オプトアウトの設定値
private static String adId = ""; // 広告IDは文字列(String型)
public static String getAdid() {
new Thread() {
public void run() {
try {
Info info = new AdvertisingIdClient(currentContent).getAdvertisingIdInfo(currentContent);
isLimitTrack = info.isLimitAdTrackingEnabled();
if (!isLimitTrack) {
// isLimitTrack = オプトアウト設定がオフのときは、広告IDを取得
adId = info.getId();
} else {
adId = ""; // 広告IDを取得しない場合の文字列(ここでは、空)
}
//Log.d("テスト", "広告ID: " + adId);
//Log.d("テスト", "isLAT: " + isLimitTrack);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
return adId;
}
または、空文字をセットして返すかを決定しています。