Google Analytics v4をAndroidアプリに組み込んでみる
どーもー。ブンブン丸です。
今回はWebページのアクセス解析でおなじみ、Google AnalyticsをAndroidアプリに導入してみたいと思います。
今回導入するのはGoogle Analytics V4 です。V3までは色々と組み込み方が面倒だったようですがV4になって楽になったみたいです。
そもそも何ができるのか
さて、Google Analyticsを組み込むと一体何ができるのでしょうか。
出来ることの例を下記に挙げてみます。
- アプリを起動した新規ユーザー数の取得
- アプリを起動したユーザー数の取得
- アプリで表示されたスクリーンと回数の取得
- タップされたボタンの回数の取得
など。Webページと同じみたいなものですね。
事前準備
まずは最低限必要なものはGoogle Analyticsを利用できるアカウントです。
アカウントが無ければ新規作成、持っている場合はAnalyticsのページへログインしてください。
http://www.google.com/analytics/
・ログインしたら上部のメニューから「アナリティクス設定」をクリックします。
・アカウントプルダウンをクリックして「新しいアカウントを作成」を選択します。
・トラッキング対象は「モバイルアプリ」を選択してアカウント名やアプリ名などを入力します。
・データ共有設定の項目をチェックして決めて、最後にページ下部にある「トラッキングIDを取得」をクリックします。
・Googleアナリティクス利用規約が表示されるので内容に同意出来れば「同意する」ボタンをクリックします。
・ページが更新されるとトラッキングIDが表示されます。このIDは後ほど必要になります。
EclipseにSDKをダウンロードしプロジェクトにインポートする
・事前準備のトラッキングIDを取得できたので次はEclipseにSDKを導入します。
・Eclipseを起動して[ウィンドウ]-[Android SDK マネージャー]を選択します。
・Android SDK Manager が起動したら Google Play services をインストールします。
・ファイルはSDKフォルダにインストールされているので、一度確認しておきましょう。
ダウンロード先は
[sdk-folder]\ extras\google\google_play_services\libproject\google-play-services_lib
です。
Google Play Services をEclipseに読み込む
・次はEclipseにGoogle Play Servicesをインポートします。
・[ファイル]-[インポート]を選択し、[Android – Existing Android Code Into Workspace]を選んで[次へ]をクリックします。
・プロジェクトのインポートではEclipseのSDKフォルダを開き、更に\extras\google\google_play_services\libproject\google-play-services_lib フォルダを指定します。表示されたプロジェクトにチェックを入れて[完了]をクリックします。
・問題なければ、パッケージエクスプローラーにgoogle-play-services_lib プロジェクトが表示されます。
Androidアプリに実装してみる
・プロジェクトの事前準備も終わったのでいよいよ実装して行きます。
工程は大きく分けて4つです。
- プロジェクトにgoogle-play-services_libを参照させる
- AndroidManifest.xmlに権限の追加、Applicationクラス名の追加
- 設定xmlの作成
- Trackerメソッドの追加
・まずは適当に動作するプロジェクトを作成します。
・作成したプロジェクトのプロパティを開き、[Android]にあるライブラリー項目の「追加ボタン」をクリックします。
・「プロジェクトの選択」ウインドウで[google-play-services_lib]を選んで「OK」ボタンをクリックします。
・ライブラリー項目にgoogle-play-services_libが追加されたのを確認できたら「OK」ボタンをクリックします。
・次にAndroidManifest.xmlを開き、次のpermissionの記述を追加します
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
・次にxmlフォルダにecommerce_tracker.xml と global_tracker.xml を作成します。
ecommerce_tracker.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="ga_sessionTimeout">60</integer> <!-- The following value should be replaced with correct property id. --> <string name="ga_trackingId"> UA-xxxxxxxx-x </string> </resources>
global_tracker.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="ga_sessionTimeout">300</integer> <bool name="ga_autoActivityTracking">true</bool> <screenName name="jp.co.nihonvtr.analyticsapp.MainActivity"> MainScreen </screenName> <screenName name="jp.co.nihonvtr.analyticsapp.SubActivity"> SubScreen </screenName> <!-- The following value should be replaced with correct property id. --> <string name="ga_trackingId">UA-xxxxxxxx-x</string> </resources>
UA-xxxxxxxx-x部分は事前に取得しておいたトラッキングIDに書き換えます。
・次にTrackerメソッドを追加します。
AnalyticsSampleApp.java
import com.google.android.gms.analytics.Logger; import com.google.android.gms.analytics.Tracker; import com.google.android.gms.analytics.GoogleAnalytics; import android.app.Application; import java.util.HashMap; public class AnalyticsSampleApp extends Application { // The following line should be changed to include the correct property id. private static final String PROPERTY_ID = "UA-xxxxxxxx-x"; public static int GENERAL_TRACKER = 0; public enum TrackerName { APP_TRACKER, // Tracker used only in this app. GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking. ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company. } HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); public AnalyticsSampleApp() { super(); } public synchronized Tracker getTracker(TrackerName trackerId) { if (!mTrackers.containsKey(trackerId)) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE); Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID) : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker( R.xml.global_tracker) : analytics.newTracker(R.xml.ecommerce_tracker); t.enableAdvertisingIdCollection(true); mTrackers.put(trackerId, t); } return mTrackers.get(trackerId); } }
・続いてAnalyticsSampleAppをAndroidManifest.xmlに登録します。
: <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name=".AnalyticsSampleApp" > :
・最後にMainActivityのonStart,OnRestartメソッドにトリガーを仕込みます。
@Override protected void onStart() { super.onStart(); Tracker t = ((AnalyticsSampleApp) getApplication()).getTracker(TrackerName.APP_TRACKER); t.setScreenName("Main"); t.send(new HitBuilders.AppViewBuilder().build()); } @Override protected void onRestart() { super.onStart(); Tracker t = ((AnalyticsSampleApp) getApplication()).getTracker(TrackerName.APP_TRACKER); t.setScreenName("Main"); t.send(new HitBuilders.AppViewBuilder().build()); }
・修正が終わったら実機へ転送し、アプリを起動します。しばらくするとAnalyticsのリアルタイムサマリーに反映されます!
今回はここまで。
コメントをどうぞ