【完全版】 Androidで広告ID(Advertising ID)を取得する方法
お疲れ様です。高橋です。
非常に長い時間掛けて他人に実機デバッグをやってもらう事、はや1ヶ月。やっと取得する事が出来ました。広告ID。めちゃくちゃ苦労したので、ここに記念にまとめておきます。
まとめ: 広告ID(Advertising ID)を取得するまで
Windows7/64bit/Eclipse4.2.1(JUNO)環境の場合。
1. Google Play servicesをAndroid SDK Managerから落としてくる。
2. LibraryをEclipseのProjectとしてimportする。
Eclipseの下記メニューを開いて・・・
そして、Android/Excisting Android Code Into Workspaceを選びます。
ルート・ディレクトリーに
ECLIPSE_HOME/sdk/extras/google/google_play_services/libproject
を指定して、google-play-services_libをプロジェクトとして読み込みます。
3. 広告IDを仕込みたいプロジェクトに、取り込んだgoogle play servicesを参照させる。
仕込みたいプロジェクトのディレクトリでメニューを表示させ、Androidタブを開き、追加ボタンを押します。
そして先ほど取り込んだgoogle-play-services_libを選択しOKを押します。
んで、OK。
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を取得する事が出来ました。
あーーーースッキリした。
以上、よろしくお願い致します。
関連記事
-
-
選挙運動シミュレータ「衆院選2014」が迷走してきた。
お疲れ様です。高橋です。 選挙運動シミュレーションゲーム「衆院選2014」の見た …
-
-
Win7(64bit)+cocos2dx-3.2でAndroid開発環境を構築してみた
お疲れ様です。高橋です。 ゲームを作る際に、自分で1から細々とした部品を作らなく …
-
-
遅刻の言い訳提案システムとウコンの力
お疲れ様です。高橋です。 現在稼働を続けている遅刻の言い訳提案システムは、改めて …
-
-
遅刻の言い訳提案システム 第一週最終日
お疲れ様です。高橋です。 今週は稼働→分析→修正→稼働、という繰り返しを何度か実 …
-
-
androidアプリの作り方
お疲れ様です。高橋です。 androidアプリの作り方は、ググったところ大体下記 …
-
-
街頭インタビュー 実装 #2
お疲れ様です。高橋です。 本日の実装状況 街頭インタビューを構成する要素を、徹底 …
-
-
アプリログをQlikViewでリアルタイムに可視化してみた。
お疲れ様です。高橋です。 タイトルは本当だと「アプリが送るログをhttpdが受け …
-
-
街頭インタビュー リリースしてみた
お疲れ様です。高橋です。 リリース 街頭インタビューアプリをリリースしました。 …
-
-
Androidアプリで画面遷移してもBGMが鳴り続けるようにしてみた。
お疲れ様です。高橋です。 先日無事にDAWで楽曲を作成してandroidアプリか …
-
-
Androidで8bitサウンドをモノフォニックな感じで実装してみた。
お疲れ様です。高橋です。 Arduino+YMZ294で、8bitサウンドがマイ …








