facebook twitter hatena line google mixi email

Android/analytics組み込み

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

analyticsのプロパティを作成

  1. https://www.google.com/analytics/web/
  2. アナリティクス設定
  3. プロパティをクリック/新しいプロパティを作成を選択
  4. トラッキングの対象をアプリに(ウェブサイトは選んでは駄目)


analyticsのSDKダウンロード

  1. https://developers.google.com/analytics/devguides/collection/android/resources?hl=ja&csw=1
  2. GoogleAnalyticsServicesAndroid_3.0.zip をダウンロード

プロジェクトにanalytiscのjarを設定

  1. libGoogleAnalyticsServices.jarをlibsの下にコピー
  2. プロジェクトプロパティ/javaビルドパス/jar追加/libGoogleAnalyticsServices.jar選択

権限設定

  • AndroidManifest.xml
<!-- net許可 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- net接続状態取得 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

簡単追跡

  • src/HogeActivity.java
@Override
public void onStart() {
  super.onStart();
  EasyTracker.getInstance(this).activityStart(this);  // Add this method.
}
@Override
public void onStop() {
  super.onStop();
  EasyTracker.getInstance(this).activityStop(this);  // Add this method.
}
  • res/values/analytics.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes">
 <!--Replace placeholder ID with your tracking ID-->
 <string name="ga_trackingId">UA-xxxx-yy</string>
 <!--Enable automatic activity tracking-->
 <bool name="ga_autoActivityTracking">true</bool>
 <!--Enable automatic exception tracking-->
 <bool name="ga_reportUncaughtExceptions">true</bool>
</resources>

高度

Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-xxxx-yy");
HashMap<String, String> hitParameters = new HashMap<String, String>();
hitParameters.put(Fields.HIT_TYPE, "appview");
hitParameters.put(Fields.SCREEN_NAME, "HomeActivity");
// hitParameters.put(Fields.SCREEN_NAME, getPackageName + "/HomeActivity"); // EasyTracer互換のアクティブスクリーン名
// hitParameters.put(Fields.SCREEN_NAME, getClass().toString());
tracker.send(hitParameters);

ネット不通エラー

W/GAV3(5764): Thread[GAThread,5,main]: Exception sending hit: UnknownHostException
W/GAV3(5764): Thread[GAThread,5,main]: ssl.google-analytics.com
W/GAV3(5764): Thread[GAThread,5,main]: Empty/Null collection passed to deleteHits.

キャンペーンデータなしと出るが動作に問題なし

I/GAV3(31049): Thread[GAThread,5,main]: No campaign data found.

サンプルクラス

  • HogeAnalytics.java
/**
 * HogeAnalyticsクラス
 * @ex
 * *ApplicationのonCreateで
 * HogeAnalytics analytics = HogeAnalytics.getInstance();
 * analytics.setUseFlag(true); // analytics使用時(任意
 * analytics.setUa("UA-xxxx-yy");
 * analytics.setContext(getApplicationContext()); // 必須
 * analytics.setPrefix(getPackageName().substring(getPackageName().lastIndexOf(".") + 1)); // prefixをつけたい場 >合(任意)
 * *それぞれのページで
 * HogeAnalytics.getInstance().trackActivity("test");// スクリーン(getClass().getName()とかでclass名を入れてもいい
 * HogeAnalytics.getInstance().trackEvent("test");// イベント
 */
public class HogeAnalytics {
    private String mUa = "";
    private Tracker mTracker;
    private Boolean mUseFlag = false; //使用フラグ
    private Context mContext;
    private String mPrefix = "";
    private static HogeAnalytics instance = new HogeAnalytics();
    private HogeAnalytics() {
    }
    public static HogeAnalytics getInstance() {
        return instance;
    }
    public void setContext(Context context) {
        mContext = context;
        initTracerInstance();
    }
    public void initTracerInstance() {
        mTracker = GoogleAnalytics.getInstance(mContext).getTracker(mUa);
    }
  public void setUseFlag(Boolean flag) {
        mUseFlag = flag;
    }
    public void setPrefix(String prefix) {
        mPrefix = prefix;
    }
    public void setUa(String ua) {
        mUa = ua;
    }
    public void trackActivity(String viewname) {
        if (!mUseFlag) return;
        if (mPrefix != "") {
            viewname = mPrefix + "." + viewname;
        }
        mTracker.set(Fields.SCREEN_NAME, viewname);
        mTracker.send(MapBuilder
             .createAppView()
             .build()
        );
    }
    public void trackEvent(String eventname) {
        if (!mUseFlag) return;
        if (mPrefix != "") {
            eventname = mPrefix + "." + eventname;
        }
        mTracker.send(MapBuilder
        .createEvent(eventname,     // Event category (required)
                eventname,  // Event action (required)
                null,                // Event label
                null)                // Event value
        .build()
        );
        mTracker.set(Fields.SCREEN_NAME, null);
    }
}

公式解説ページ

https://developers.google.com/analytics/devguides/collection/android/v3/?hl=ja#manifest

参考ページ

http://d.hatena.ne.jp/bs-android/20101222/1292946385