テクノモンキーのアプリ開発日記

テクノモンキーの開発ブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsやアプリ開発に役立つ情報を発信します。

アプリから端末の広告IDを取得する方法(iOS,Android)

仕事で端末の広告IDを取得する場面があったので今後の為にメモ。



端末の広告IDについて

まず、端末の広告IDというのはどのようなものかというのは以下の記事が参考になりました。

dmlab.jp

スマートフォンアプリ広告では、これまで「端末識別ID(AppleではUDID(Unique Device IDentifier)、GoogleではAndroid ID)」が利用されてきたが、これには「ユーザーが自由に削除、オプトアウトできない」などのプライバシー保護上の問題があり、2011年頃から段階的に廃止されてきました。これに代わるIDが広告IDです。

広告IDは、プラットフォーム自体が提供するIDなので、各ユーザーが使用しているアプリや、そのアプリの使用状況などの情報を持っており、精度の高いターゲティングが期待されています。ただし、利用できる範囲がアプリに限定されているので、ブラウザではCookieを利用したターゲティングがまだまだ主流となりそうです(2015年3月現在)。

Appleの広告IDは「IDFA(Advertising Identifier)」、Googleの広告IDは「AAID(Google Advertising Identifier)」になります。 

つまり「広告ID」というのは、「端末を識別する為のユニークなIDで、再生成可能なID」です。


iOS】アプリから端末の広告IDを取得する方法

iOSの場合は以下の方法でIDFAを取得できます。
AdSupportライブラリのインポートが必要です。

import AdSupport
//AdSupportのライブラリをインポート

let mIDFA = ASIdentifierManager().advertisingIdentifier
print("IDFA :\(mIDFA.uuidString.utf8)")


Android】アプリから端末の広告IDを取得する方法

Androidの場合は以下の方法でAAIDを取得できます。
Androidは「com.google.android.gms:play-services」のライブラリインポートが必要です。

import com.google.android.gms.ads.identifier.AdvertisingIdClient;

public void getAdId() {
        Thread adIdThread = new Thread(new Runnable() {
            @Override
            public void run() {
                AdvertisingIdClient.Info adInfo = null;
                try {
                    adInfo = AdvertisingIdClient
                            .getAdvertisingIdInfo(getApplicationContext());
                    final String id = adInfo.getId();
                    final boolean isLAT = adInfo.isLimitAdTrackingEnabled();
                    Log.d("DEBUG", "AndroidAdID : " + id);
                    Log.d("DEBUG", "OptoutFlag : " + String.valueOf(isLAT));
                } catch (Exception e) {
                }
            }
        });
        adIdThread.start();
}