curious4dev

中国旅行、Arduinoなどを使った電子工作、その他色々。

*

【完全版】 Androidで広告ID(Advertising ID)を取得する方法

 

お疲れ様です。高橋です。

非常に長い時間掛けて他人に実機デバッグをやってもらう事、はや1ヶ月。やっと取得する事が出来ました。広告ID。めちゃくちゃ苦労したので、ここに記念にまとめておきます。

まとめ: 広告ID(Advertising ID)を取得するまで

Windows7/64bit/Eclipse4.2.1(JUNO)環境の場合。

1. Google Play servicesをAndroid SDK Managerから落としてくる。

adid00

2. LibraryをEclipseのProjectとしてimportする。

Eclipseの下記メニューを開いて・・・

adid02

そして、Android/Excisting Android Code Into Workspaceを選びます。

adid03

ルート・ディレクトリーに

ECLIPSE_HOME/sdk/extras/google/google_play_services/libproject

を指定して、google-play-services_libをプロジェクトとして読み込みます。

adid01

3. 広告IDを仕込みたいプロジェクトに、取り込んだgoogle play servicesを参照させる。

仕込みたいプロジェクトのディレクトリでメニューを表示させ、Androidタブを開き、追加ボタンを押します。

adid04

そして先ほど取り込んだgoogle-play-services_libを選択しOKを押します。

adid05

んで、OK。

adid06

4. AndroidManifest.xmlにパラメータを設定する。

AndroidManifest.xmlを開いて、applicationタグの中のどこかに、下記meta-dataタグを仕込みます。

 <meta-data
 android:name="com.google.android.gms.version"
 android:value="@integer/google_play_services_version" />

5. 広告IDを取得するクラスを準備する。

下記には例としてAdvertiseIDというクラス名で作成します。

package jp.curious4dev.nishinokanakana;

import java.io.IOException;

import com.google.android.gms.ads.identifier.AdvertisingIdClient;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;

import android.os.AsyncTask;

public class AdvertiseID extends AsyncTask<Void, Void, String> {

    private MainActivity mainActivity;

    public AdvertiseID(MainActivity activity) {
        mainActivity = activity;
    }

    @Override
    protected String doInBackground(Void... params) {
        String strAdId = "";
        try {
            AdvertisingIdClient.Info info = AdvertisingIdClient.getAdvertisingIdInfo(mainActivity);
            if (info.isLimitAdTrackingEnabled() == false) {
                strAdId = info.getId();
            } else {
                strAdId = "Limit Ad Tracking is Enabled.";
            }
        } catch (IllegalStateException e) {
            strAdId = "IllegalStateException";
        } catch (GooglePlayServicesRepairableException e) {
            strAdId = "GooglePlayServicesRepairableException";
        } catch (IOException e) {
            strAdId = "IOException";
        } catch (GooglePlayServicesNotAvailableException e) {
            strAdId = "GooglePlayServicesNotAvailableException";
        }
        return strAdId;
    }

    @Override
    protected void onPostExecute(String advertisingID) {
        if (advertisingID != null) {
            mainActivity.strAdId = advertisingID;

        }
    }
}

6. 広告ID取得クラスを使う箇所のコードを書く。

    public void postLog(String action) {

        this.strAction = action;

        if (strAdId.equals("") == true) {
            AdvertiseID adId = new AdvertiseID(this);
            adId.execute();
        }

        postLog();

    }

    public void postLog() {

        Thread adIdPostThread = new Thread(new Runnable() {
            @Override
            public void run() {

                // post log with advertisement id to curious4dev

                // パラメータを生成
                ArrayList params = new ArrayList();
                params.add(new BasicNameValuePair("app_id", strAppId));
                params.add(new BasicNameValuePair("adid", strAdId));
                params.add(new BasicNameValuePair("act", strAction));
                // パラメータをクエリに変換
                String query = URLEncodedUtils.format(params, "UTF-8");
                HttpGet httpGet = new HttpGet(strUrl + query);
                DefaultHttpClient client = new DefaultHttpClient();
                try {
                    client.execute(httpGet);
                } catch (Exception e) {

                }

            }
        });
        adIdPostThread.start();
    }

7. 実機試験

AndroidManifest.xmlにmeta-dataを仕込み、いざリリースします。リリース後に誰かに実験台になってもらい、広告IDが正しく取得&送出出来たか確認します。

無事、謎の36byteの広告IDを取得する事が出来ました。

adid07

 

 

 

あーーーースッキリした。

以上、よろしくお願い致します。

 - アプリ開発

  関連記事

「寝坊した」人に自動的に遅刻の言い訳を提案する仕組みを稼働させてみた。

お疲れ様です。高橋です。 寝坊した人にアプリをオススメする仕組みを作りましたが、 …

街頭インタビュー生成アプリ

お疲れ様です。高橋です。 街頭インタビューっぽいアプリ 街頭インタビューっぽい画 …

街頭インタビュー 実機デバッグ結果

お疲れ様です。高橋です。 先日リリースした街頭インタビューアプリの実機デバッグ、 …

「カナかな?」を実機デバッグし、ログ送出機能を追加してリリースしてみた。

お疲れ様です。高橋です。 デバッグしてみた 先日リリースした、西野カナ風の歌詞を …

リリースしたアプリ達が累計200DLを突破!

お疲れ様です。高橋です。 2014/12/04に最初にリリースした「カナかな?」 …

「遅刻の言い訳」実機デバッグ結果

お疲れ様です。高橋です。 本日、Androidを持っている同僚にお願いして、実機 …

リリースアプリ群が累計400ダウンロード突破

お疲れ様です。高橋です。 スマートフォン向けアプリ群が2015年5月13日(水) …

西野カナ風な歌詞自動生成「カナかな?」をリリースしてみた。

お疲れ様です。高橋です。 昨日はずっと助詞に関する実装をしていたのですが、どうし …

アプリログをQlikViewでリアルタイムに可視化してみた。

お疲れ様です。高橋です。 タイトルは本当だと「アプリが送るログをhttpdが受け …

街頭インタビュー 入力UI実装

お疲れ様です。高橋です。 今日は文字入力UI及び、背景人物の切り替え機能を実装し …