Android StudioでGoogle Analytics v4を組み込んだメモ
AdMobに続いて、先日のアプリを作るときにGoogleAnalyticsを組み込んだときのメモを残しておきます。
参考:Working with Google Analytics API v4 for Android | Java Code Geeks
今回も基本的には公式のGoogle Analytics SDK v4 for Android – Getting Started – Google Analytics — Google Developersに沿ってますがTrackerのあたりはシンプルにしています(たぶん要らないと思って
環境:Android Studio (Beta) 0.8.2
1.Googleサービスのライブラリを組み込む
前回と同じGooglePlay開発者サービスを使うのですでに組み込んでるなら不要
メニューのFile->Project Structure…を選択
左のModulesから組み込みたいプロジェクトを選択して、Dependenciesタブの右上にある[+](Add)からLibrary dependencyを選択
Google Play Services (Wearableじゃないほう)を選択してOKで閉じていく
(見つからないときはAndroid SDK Mangerでインストールしていない可能性?)
するとbuild.gradleに追加されてプロジェクトのSyncが行われるはず
2.AndroidManifest.xmlへ追記
meta-data タグ
<?xml version="1.0" encoding="utf-8"?> <manifest ...> <application ...> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <activity ...> </application> </manifest>
uses-permission でネットワーク権限を設定(すでに組み込んでた)
<manifest ...> <application ...> <meta-data ...> <activity ...> </application> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> </manifest>
3.設定xmlをつくる
/res/xmlにapp_tracker.xmlとして配置しました
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- How long a session exists before giving up --> <integer name="ga_sessionTimeout">300</integer> <!-- Enable automatic Activity measurement --> <bool name="ga_autoActivityTracking">true</bool> <!-- The screen names that will appear in reports --> <screenName name="com.アクティビティ"> 解析に表示させたいスクリーン名 </screenName> <!-- The following value should be replaced with correct property id. --> <string name="ga_trackingId">UA-XXXXXXX-Y</string> </resources>
4.Applicationクラスを継承する
トラッカーを取得するメソッドを定義しています、サンプルだとenum定義して使い分けている様子
import android.app.Application; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; public class MyApplication extends Application { Tracker mTracker; MyApplication(){ super(); } synchronized Tracker getTracker() { if(mTracker == null){ GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); mTracker = analytics.newTracker(R.xml.app_tracker); } return mTracker; } }
あわせて、AndroidManifest.xmlも変更しておきます
<?xml version="1.0" encoding="utf-8"?> <manifest ...> <application android:name=".MyApplication" ...> <activity ...> </application> </manifest>
5.Activityに追記する
xmlのga_autoActivityTrackingをtrueにしたのでいけるのかなと思いきや、そのxmlをnewTrackerとして登録していないと動かない(当たり前か)のでそのあたりの追記が必要でした
import com.google.android.gms.analytics.GoogleAnalytics; public class MyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); // これが必要だった ((MyApplication)getApplication()).getTracker(); } @Override protected void onStart() { super.onStart(); GoogleAnalytics.getInstance(this).reportActivityStart(this); } @Override protected void onStop() { GoogleAnalytics.getInstance(this).reportActivityStop(this); super.onStop(); } }
これで実行するとGoogleAnalyticsのリアルタイムあたりでぴょこっと(少しの時間差で)でてくるはず
6.イベントをトラッキングする
上記は画面別ですが個々のイベントを送るにはEventBuilderを使うみたい
@Override public void onClick(View v) { Tracker tracker = ((MyApplication)getApplication()).getTracker(); tracker.send(new HitBuilders.EventBuilder() .setCategory("Category") .setAction("Action") .setLabel("Label") .build()); }
[…] EasyTracker相当の処理にしたかったので Android StudioでGoogle Analytics v4を組み込んだメモに倣って global_tracker.xmlを使用。 ScreenNameを省略した場合は […]