【完全版】 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を取得する事が出来ました。
あーーーースッキリした。
以上、よろしくお願い致します。
関連記事
-
-
寝坊検知&遅刻の言い訳提案システム #2
お疲れ様です。高橋です。 昨日作った遅刻の言い訳提案システムですが、Tweetの …
-
-
アプリログをQlikViewでリアルタイムに可視化してみた。
お疲れ様です。高橋です。 タイトルは本当だと「アプリが送るログをhttpdが受け …
-
-
「カナかな?」を実機デバッグし、ログ送出機能を追加してリリースしてみた。
お疲れ様です。高橋です。 デバッグしてみた 先日リリースした、西野カナ風の歌詞を …
-
-
合理的な遅刻の言い訳生成アプリ。
お疲れ様です。高橋です。 寝坊と遅刻連絡について 平日の朝。iPhoneのアラー …
-
-
SurfaceViewを使って絵を書き動かすサンプルをコピペして動かしてみた
お疲れ様です。高橋です。 本日はcocos2d-xの3.3rc0を導入しようと試 …
-
-
Twitter上に広がる寝坊市場について
お疲れ様です。高橋です。 遅刻の言い訳アプリ 初週DL数 2/26頃にリリースし …
-
-
遅刻の言い訳提案システム 稼働初日
お疲れ様です。高橋です。 先日まで微調整を重ねてきた「遅刻の言い訳提案システム」 …
-
-
遅刻の言い訳提案システム 第一週最終日
お疲れ様です。高橋です。 今週は稼働→分析→修正→稼働、という繰り返しを何度か実 …
-
-
選挙運動シミュレータ「衆院選2014」が迷走してきた。
お疲れ様です。高橋です。 選挙運動シミュレーションゲーム「衆院選2014」の見た …
-
-
街頭インタビュー 入力UI実装
お疲れ様です。高橋です。 今日は文字入力UI及び、背景人物の切り替え機能を実装し …








