【完全版】 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を取得する事が出来ました。
あーーーースッキリした。
以上、よろしくお願い致します。
関連記事
-
-
FreeなWindows向けDAWを使って作った音楽をwavからoggにしてAndroidアプリで鳴らしてみた。
お疲れ様です。高橋です。 先日POSTした「DAWを使って、ゲームの裏側で鳴らす …
-
-
リリースした事をスッカリ忘れていた2つのアプリの今について。
お疲れ様です。高橋です。 最近すっかりArduinoにハマってしまって、Andr …
-
-
Win7(64bit)+Unity4.5.5f1で作った物をAndroidエミュで動かしてみた
お疲れ様です。高橋です。 先ほどはcocosを使ったサンプルをエミュで動かす所ま …
-
-
8bit音アプリを実機デバッグし、モスキート音モードを追加してみた。
お疲れ様です。高橋です。 今日会社でAndroidを持っている人にインストールし …
-
-
遅刻の言い訳提案システム 稼働四日目
お疲れ様です。高橋です。 本日も遅刻の言い訳提案システムのデータの分析と改善のた …
-
-
広告IDが取得出来なかった理由がわかってきた。かな?
お疲れ様です。高橋です。 しばらく前からめぼしい更新を停止していた「カナかな?」 …
-
-
URL付き言い訳提案システム 稼働2日目
お疲れ様です。高橋です。 本日は946寝坊、270提案、19クリックでした。 & …
-
-
androidアプリから総務省APIをコールしてみる
お疲れ様です。高橋です。 androidアプリから総務省APIをコールする事に成 …
-
-
8bitサウンドを出すAndroidアプリをリリースしてみた。
お疲れ様です。高橋です。 先日の「Androidで8bitサウンドをモノフォニッ …
-
-
遅刻の言い訳アプリをリリースしてみた。
お疲れ様です。高橋です。 2/20あたりから、「合理的な遅刻の言い訳生成アプリ。 …