気がついたら v4.
実装してみる, と.
Google Analytics SDK v4 for Android - Getting Started - Google アナリティクス — Google Developers
読んで, さらっと, 箇条書き
・libs以下のjar不要. 「Google Play Service SDK」に含まれている
・Application 拡張クラスにTrackerメソッドを配置
・AndroidManifest.xml に Applicationクラス名記述
・設定はXMLファイルに記述
実際, やってみるといろいろあったのでメモ.
1. AndroidManifest.xml
インターネット接続系の2つ.
... <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ...
アプリケーションクラス(後述)
... <Application … android:name=".AnalyticsSampleApp"> ...
2. Applicationクラスを拡張してトラッカーメソッドを
SDK内サンプルをほとんどそのまま流用する.
public class AnalyticsSampleApp extends Application { // The following line should be changed to include the correct property id. // XMLファイルの中にもあるのはマルチなGLOBAL/ECOMMERCE用 private static final String PROPERTY_ID = "UA-xxxxxxx-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 に変更 public synchronized Tracker getTracker(TrackerName trackerId) { if (!mTrackers.containsKey(trackerId)) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 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); mTrackers.put(trackerId, t); } return mTrackers.get(trackerId); } }
extras/google/google_play_services/ の下のほうにある.
... $ pwd /Applications/Android Studio.app/sdk/extras/google/google_play_services/samples/analytics $ tree . ├── AndroidManifest.xml ├── proguard.flags ├── res │ ├── drawable │ │ └── icon.png │ ├── layout │ │ ├── ecommerce.xml │ │ ├── event.xml │ │ ├── exception.xml │ │ ├── screenview.xml │ │ ├── social.xml │ │ └── timing.xml │ ├── values │ │ └── strings.xml │ └── xml │ ├── ecommerce_tracker.xml │ └── global_tracker.xml └── src └── com └── google └── android └── gms └── analytics └── samples └── mobileplayground ├── AnalyticsSampleApp.java (*) ├── AppviewFragment.java ├── EcommerceFragment.java ├── EventFragment.java ├── ExceptionFragment.java ├── MobilePlayground.java ├── SocialFragment.java └── TimingFragment.java 13 directories, 20 files
ところが,
com.google.android.gms.analytics.* がない
といわれたので play-services のバージョンをあげたら行けた以下.
build.gradle の dependencies
compile 'com.google.android.gms:play-services:4.0.30'
↓ 今日現在, 4.0.32 には含まれてる
compile 'com.google.android.gms:play-services:+'
3. 設定のXML
なくてもよい.
FragmentにScreenNameをつけたり,
トラッキングIDについてもここにも設定がある.
(マルチID向け)
4. 送信
スクリーンネーム別でトラッキングするには以下.
... // Get tracker. Tracker t = ((AnalyticsSampleApp)getActivity().getApplication()) .getTracker(TrackerName.APP_TRACKER); // Set screen name. // Where path is a String representing the screen name. // これは設定のXMLがない APP_TRACKER のみで使用している. t.setScreenName(path); // Send a screen view. t.send(new HitBuilders.AppViewBuilder().build()); ...
階層なイベントなスタイルでトラッキングするには以下.
@Override public void onClick(View v) { // Get tracker. Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker( TrackerName.APP_TRACKER); // Build and send an Event. t.send(new HitBuilders.EventBuilder() .setCategory(getString(categoryId)) .setAction(getString(actionId)) .setLabel(getString(labelId)) .build()); }
公式ドキュメントを改めて読むとほとんどそのまま書いているそのままなのだがw
リリースビルド時, なんかあるのかもサンブル内 proguard.flags.
-keep public class com.google.android.gms.analytics.** { public *; } # AppCompat -keep class android.support.v7.app.** { *; } -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; }
きをつけておこう.
関連ワード: Android・AndroidStudio・Gradle・ライブラリ・開発・Analytics・proguard・resolve・tracker・v4