Help us understand the problem. What is going on with this article?

AndroidStudio+GoogleAnalytics。またまたコピペで実装できるようにまとめてみたよ!スクリーンとイベントの測定をワンライナーで書けるようにしてみたよ!

More than 3 years have passed since last update.

はじめに

前回の記事:AndroidStudio×FacebookSDK。SDKの導入からシェアの実装までコピペで出来るようにまとめてみました。

開発を進めていくと必ず計測ツールを導入しますよね。
今回は「GoogleAnalytics」の導入方法を基本的にはコピペで実装できるようにしたので、まとめてみました。
また、導入の敷居を下げるためにスクリーンとイベントの測定を1行でかけるメソッドも用意しました!是非使ってみてください!

開発環境

AndroidStudio v1.1.0
googleAnalytics

導入編

Google-Play-Serviceの導入

File->Project Structure->Dependenciesから下記図のように追加します。
Choose_Library_Dependency_と_Project_Structure_と_MeasurementGAManager_java_-__app__-_pasti_android_-____AndroidStudioProjects_pasti_android_.png

AndroidManifest.xmlに記述その1

AndroidManifest.xml
<!-- <application ~ </application>内に記述 -->
<meta-data
   android:name="com.google.android.gms.version"
   android:value="@integer/google_play_services_version" />
AndroidManifest.xml
<!--権限の追加-->
<!-- <manifest ~ </manifest>内に記述 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

xmlディレクトリにファイルを追加・編集(コピペ)

ファイルを追加

下記図のようにxmlディレクトリ内に「ecommerce_tracker.xml」「global_tracker.xml」を追加します。(xmlディレクトリがない場合は作成してください)

220a3bdd-85ae-5acc-535a-00f0569ca01e.png

ファイルを編集

「ecommerce_tracker.xml」「global_tracker.xml」それぞれに下記をコピペしてください。

ecommerce_tracker.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="ga_sessionTimeout">60</integer>
    <!-- Idは任意のものに変更してください -->
    <string name="ga_trackingId">UA-00000000-0</string>
</resources>
global_tracker.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="ga_sessionTimeout">300</integer>
    <bool name="ga_autoActivityTracking">false</bool>
    <!-- Idは任意のものに変更してください -->
    <string name="ga_trackingId">UA-00000000-0</string>
</resources>

MeasurementGAManagerの作成

任意のディレクトリにMeasurementGAManager.javaを作成し、下記をコピペしてください。
(パッケージ名は任意の名前に変更してください)

MeasurementGAManager.java
package com.example.hogehoge;

import com.google.android.gms.analytics.HitBuilders;
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 android.content.Context;
import java.util.HashMap;
import com.example.hogehoge.R;



public class MeasurementGAManager extends Application {
    private enum TrackerName {
        APP_TRACKER,
        GLOBAL_TRACKER,
        ECOMMERCE_TRACKER,
    }

    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
    public MeasurementGAManager() {
        super();
    }
    private 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(R.xml.global_tracker)
                    : (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);
    }

    public static void sendGAScreen(Context context, String screenName) {
        Tracker t = ((MeasurementGAManager) context.getApplicationContext()).getTracker(MeasurementGAManager.TrackerName.APP_TRACKER);
        t.setScreenName(screenName);
        t.send(new HitBuilders.AppViewBuilder().build());
    }

    public static void sendGAEvent(Context context, String category, String action, String label) {
        if(label.length() == 0){
            label = "-";
        }
        Tracker t = ((MeasurementGAManager) context.getApplicationContext()).getTracker(TrackerName.APP_TRACKER);
        t.send(new HitBuilders.EventBuilder()
                .setCategory(category)
                .setAction(action)
                .setLabel(label)
                .setValue(0)
                .build());
    }
}

AndroidManifest.xmlに記述その2

下記図のように<applicaitonのandroid:nameを変更してください。

main_AndroidManifest_xml_-__app__-_pasti_-____AndroidStudioProjects_pasti_.png

AndroidManifest.xml
com.example.hogehoge.MeasurementGAManager

を追加。(com.example.hogehogeの部分は任意のものに変更してください)

ここまで導入になります!では実際に計測してみましょう!

計測編

スクリーン・イベントの計測

まずは下記をインポート(com.example.hogehogeは任意のものに変更してください)

MainActivity
import com.example.hogehoge.MeasurementGAManager;

あとは下記を記述すると測定出来ます。(どちらか片方でも大丈夫です)

MainActivity.java
// GAスクリーン計測 第一引数:Context, 第二引数:スクリーン名
MeasurementGAManager.sendGAScreen(this, "スクリーン名");

// GAイベント計測 第一引数:Context, 第二引数:カテゴリ名, 第二引数:アクション名, 第二引数:ラベル名
MeasurementGAManager.sendGAEvent(this, "カテゴリ名", "アクション名", "ラベル名");

最後に

Android開発楽しいですね。今後もコピペで出来るシリーズを投稿していきたいと思います!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away