Google Analytics v4(Android)のリリースで、フラグメントビューを追跡するための推奨される方法は何ですか?このソリューションはまだ推奨される方法ですか https://stackoverflow.com/a/19284014/413254 ?
ドキュメントのサンプル( https://developers.google.com/analytics/devguides/collection/Android/v4/#analytics-xml )には、次の設定があります。
global_tracker.xml
_<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="ga_sessionTimeout">300</integer>
<bool name="ga_autoActivityTracking">true</bool>
<screenName name="com.google.Android.gms.analytics.samples.mobileplayground.ScreenviewFragment">
AnalyticsSampleApp ScreenView
</screenName>
<screenName name="com.google.Android.gms.analytics.samples.mobileplayground.EcommerceFragment">
AnalyticsSampleApp EcommerceView
</screenName>
<!-- The following value should be replaced with correct property id. -->
<string name="ga_trackingId">UA-XXXXXXX-Y</string>
</resources>
_
この構成はアクティビティの自動追跡を有効にしているように見えますが、これはフラグメントの魔法では機能しないと思いますか?この例では、t.setScreenName(path);
が呼び出され、パスが_"com.google.Android.gms.analytics.samples.mobileplayground.EcommerceFragment"
_の場合、「AnalyticsSampleAppScreenView」画面イベントが送信されると想定します。
はい、投稿したリンクに記載されているソリューションを使用する必要があります。これの主な理由は、フラグメントの存続期間がアクティビティの存続期間ほど単純ではないためです。 Androidは、フラグメントライフサイクルのコールバックを提供しません。
フラグメントが表示されるたびに、フラグメント識別子を画面名として設定する必要があります。サンプルアプリで、MobilePlayground.Java
を見ると、onTabSelected
が表示されます。サンプルアプリでは、画面が変わるたびにこの関数が呼び出されます。画面を設定し、screenview
/appview
ヒットを送信するのに適した場所です。
より詳細な例が必要な場合はお知らせください。
Googleのドキュメント からこのコードを使用してください。
package com.google.Android.apps.mobileplayground;
import com.google.Android.apps.mobileplayground.AnalyticsSampleApp.TrackerName;
import com.google.Android.gms.analytics.GoogleAnalytics;
import com.google.Android.gms.analytics.HitBuilders;
import com.google.Android.gms.analytics.Tracker;
import Android.os.Bundle;
import Android.support.v4.app.Fragment;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.view.ViewGroup;
import Android.widget.Button;
/**
* Class to exercise Event hits.
*/
public class EventFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.event, container, false);
setupEvent(view, R.id.video1Play, R.string.videoCategory, R.string.videoPlay, R.string.video1);
setupEvent(view, R.id.video1Pause, R.string.videoCategory, R.string.videoPause,
R.string.video1);
setupEvent(view, R.id.video2Play, R.string.videoCategory, R.string.videoPlay, R.string.video2);
setupEvent(view, R.id.video2Pause, R.string.videoCategory, R.string.videoPause,
R.string.video2);
setupEvent(view, R.id.book1View, R.string.bookCategory, R.string.bookView, R.string.book1);
setupEvent(view, R.id.book1Share, R.string.bookCategory, R.string.bookShare, R.string.book1);
final Button dispatchButton = (Button) view.findViewById(R.id.eventDispatch);
dispatchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Manually start a dispatch (Unnecessary if the tracker has a dispatch interval)
GoogleAnalytics.getInstance(getActivity().getApplicationContext()).dispatchLocalHits();
}
});
return view;
}
private void setupEvent(View v, int buttonId, final int categoryId, final int actionId,
final int labelId) {
final Button pageviewButton = (Button) v.findViewById(buttonId);
pageviewButton.setOnClickListener(new OnClickListener() {
@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());
}
});
}
}