ワシはワシが育てる

週刊少年ジャンプと任天堂のゲームが三度のメシより好きです。

AndroidのGoogle AnalyticsでFragmentのトラッキングをする

FragmentManagerを用いてFragmentの再利用時にも適用できるように、onStartをオーバーライドするのが通例なようです。

@Override
public void onStart() {
    super.onStart();

    tracker.set(Fields.SCREEN_NAME, "フラグメント名");
    tracker.send(MapBuilder.createAppView().build());
}

このように書けば良いのですが、トラッキングしたいFragment全てに逐一書くのは冗長なので、自分はFragmentを継承したクラスを作成しました。

public class AnalyticsFragment extends Fragment {
    @Override
    public void onStart() {
        String fragmentName = "";

        if (this instanceof HogeFragment) {
            fragmentName = "ほげ";
        } else if (this instanceof FugaFragment) {
            fragmentName = "ふが";
        }

        if (!fragmentName.isEmpty()) {
            tracker.set(Fields.SCREEN_NAME, fragmentName);
            tracker.send(MapBuilder.createAppView().build());
        }
    }
}

ラッキング名は一つのファイルで一元管理したかったのですが、Activityと違ってxmlファイルで定義できるという話を聞かないので、どのインスタンスかによって判定しました。