【完全版】 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を取得する事が出来ました。
あーーーースッキリした。
以上、よろしくお願い致します。
関連記事
-
-
AndroidアプリでHoloGraphLibraryを使ってグラフ描画してみた
お疲れ様です。高橋です。 先日、総務省の統計APIをコールしてデータを取得してく …
-
-
合理的な遅刻の言い訳生成アプリ。
お疲れ様です。高橋です。 寝坊と遅刻連絡について 平日の朝。iPhoneのアラー …
-
-
上司離着席状態検知アプリ
お疲れ様です。高橋です。 上司離着席状態検知システムですが、 必要性を記載 回路 …
-
-
西野カナ風な歌詞自動生成「カナかな?」をリリースしてみた。
お疲れ様です。高橋です。 昨日はずっと助詞に関する実装をしていたのですが、どうし …
-
-
SurfaceViewを使って絵を書き動かすサンプルをコピペして動かしてみた
お疲れ様です。高橋です。 本日はcocos2d-xの3.3rc0を導入しようと試 …
-
-
総務省の統計APIからデータを取得する
お疲れ様です。高橋です。 androidアプリから総務省APIをコールしてみる …
-
-
アプリDL状況と言い訳システムの効果について
お疲れ様です。高橋です。 リリースしたアプリのDL状況 3/20(Fri)時点で …
-
-
広告IDが取得出来なかった理由がわかってきた。かな?
お疲れ様です。高橋です。 しばらく前からめぼしい更新を停止していた「カナかな?」 …
-
-
遅刻の言い訳アプリ ~ボタンの幅を動的に決定~
お疲れ様です。高橋です。 遅刻の言い訳アプリを着々と実装しています。 全体進捗 …
-
-
アプリ開発に必要な要素技術
お疲れ様です。高橋です。 androidアプリ開発に必要な要素技術はものすごーー …