Google Analytics Android #2 ページビューを測定しよう
はじめに
前回は Google Analytics を Android アプリに導入する手順をご紹介しました。
今回は Activity または Fragment のページビューを測定する方法について勉強していきたいと思います。ベージビューを測定することで、アプリ内のどのページ (コンテンツ) がよく閲覧されているか把握することができます。ちなみにページビューの測定は Google Analytics では ScreenTracking と呼ばれています。
Activity のページビューを自動測定する
測定する対象ページが Activity の場合は EasyTracker クラスを用いると非常に簡単に実装できます。
まず analytics.xml の ga_autoActivityTracking を true に設定し、計測したい Activity の表示名を設定します。ここで設定した表示名は計測結果で表示されるようになります。
<!-- Activityの自動トラッキング --> <bool name="ga_autoActivityTracking">true</bool> <!-- Activityの表示名 --> <string name="jp.classmethod.android.sample.analytics.MainActivity">Home</string> <string name="jp.classmethod.android.sample.analytics.SubActivity">Detail</string>
Activity は以下のように実装します。
@Override protected void onStart() { super.onStart(); EasyTracker.getInstance().activityStart(this); } @Override protected void onStop() { super.onStop(); EasyTracker.getInstance().activityStop(this); }
前回にもご紹介したコードです。EasyTracker.getInstance().activityStart() を画面が表示されるタイミングに、EasyTracker.getInstance().activityStop() を画面から離れるタイミングに呼び出します。例では onStart() と onStop() で実装していますが、ここに書かなければいけないというわけではないので、アプリの実装に合わせて自由に決めることができます。
ちなみに全ての画面を同じタイミングで測定したい場合、全ての Activity に書くのではなく BaseActivity のようなクラスを作成し、全ての Activity がこのクラスを継承するようにしておくと一気に実装できて楽ですね!
これを計測すると以下のようになります。
Fragment のページビューをマニュアルで測定する
測定するページ対象が Fragment の場合は EasyTracker.getInstance().activityStart() は使えません。そのときは EasyTracker.getTracker().sendView() を使い、以下のように実装します。
@Override public void onStart() { super.onStart(); EasyTracker.getTracker().sendView("Item Dialog"); }
EasyTracker.getTracker().sendView() メソッドにはページ名を渡します。ここで渡したページ名はブラウザで確認するときに表示される名前になるので、一意である必要があります。逆に言えば、異なる画面でも同じ名前で sendView() すれば同じページとして集計することができます。使いかたとしてどうかと思いますがw
実装して確認してみると、下図のようになると思います。
結果を確認する
それでは結果を確認してみましょう。右メニューから「ユーザーロイヤリティ」>「スクリーン」を選択します。
全てのページビューの測定結果が表示され、どのページが何回閲覧されたか確認することができます。
まとめ
以上、前回の内容と重複するところが多いですが Screen Tracking でページビューを測定してみました。ページビューの対象とするページの単位は Activity だけではなく Fragment もしくは View なども含めることができます。Fragment が画面遷移になるケースが多いと思うので EasyTracker.getTracker().sendView() を使うことが多くなると思います。また画面の名前を任意に決めることができるので、クラス名に限る必要はありません。計測結果は実装する人が見るとは限らないので、誰が見ても分かる名前を付けたいですね。
次回はイベント(ボタンが押されたタイミングなど)を計測したいと思います。