【Android】広告ID(ADID)をユーザの広告のオプトアウト設定を考慮し取得する

広告ID(ADID)の概要

Androidアプリの開発では、広告ID(ADID)を取得してFirebaseや、サーバ等に送信することはよくあります。

サーバ等では、この取得した広告IDを活用して、ユーザに配信する広告を決定することができます。

詳しくは、PlayConsole>ヘルプ>広告をチェックしてください。

管理人

広告IDは、ユーザの興味に基づく情報が関連づけられているようです。
例えば、車好きの20代の人に、合わせた広告を配信できるといった感じでしょう。

注意すること

広告IDは、自由に取得して、好きなようにつかって良いわけではありません。
この 参考 収益化と広告>Android 広告 ID の使用>ユーザーの選択を優先デベロッパー ポリシー センター ページに記載もありますが、基本的にはユーザの意向を尊重する必要があります。
※詳しくは、公式ページを読み込んでください。
(本記事では、一切の責任を終えませんためです)

ユーザの設定例
Androidのgoogle設定のユーザオプトアウト設定

では実際にアプリ側では何をすればよいのでしょうか?

これは、すごくシンプルです。
具体的には、ユーザーのAndroid端末の「広告IDをオプトアウト」する設定を考慮して、オプトアウト=つまり拒否されている場合は、広告IDを取得してはいけません。

これらを考慮して実装する必要があるので注意しましょう。


注意
AndroidStudio等で広告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;
}

管理人

オプトアウト設定値(isLimitTrack)を取得し、この設定により、広告IDを取得してリターンするか?
または、空文字をセットして返すかを決定しています。