Android 我应该如何在Google Analytics v4中跟踪片段?
随着Google Analytics v4(Android)的发布,跟踪片段视图的推荐方法是什么?这个解决方案仍然是推荐的方法吗 文档()中的示例具有以下配置: global_tracker.xmlAndroid 我应该如何在Google Analytics v4中跟踪片段?,android,android-fragments,google-analytics,google-analytics-firebase,Android,Android Fragments,Google Analytics,Google Analytics Firebase,随着Google Analytics v4(Android)的发布,跟踪片段视图的推荐方法是什么?这个解决方案仍然是推荐的方法吗 文档()中的示例具有以下配置: global_tracker.xml <?xml version="1.0" encoding="utf-8"?> <resources> <integer name="ga_sessionTimeout">300</integer> <bool name="ga_a
<?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>
300
真的
AnalyticsSampleApp屏幕视图
AnalyticsSampleApp电子商务视图
UA-XXXXXXX-Y
这个配置看起来可以对活动进行自动跟踪,但我假设这对片段没有任何魔力?在本例中,我假设如果
t.setScreenName(path),将发送“AnalyticsSampleApp ScreenView”屏幕事件调用code>,路径为“com.google.android.gms.analytics.samples.mobileplayground.EcommerceFragment”
?是的,您必须使用您发布的链接中描述的解决方案。这主要是因为片段的生命周期不像活动的生命周期那么简单。Android不为片段生命周期提供回调
您应该做的是在显示片段时将片段标识符设置为屏幕名称。在示例应用程序中,如果您查看MobilePlayground.java
,您将看到onTabSelected
。在示例应用程序中,只要屏幕发生更改,就会调用此函数。这将是一个设置屏幕并可能发送screenview
/appview
点击的好地方
如果您需要更详细的示例,请告诉我。使用来自的代码
使用global_tracker.xml字符串path=“com.google.android.gms.analytics.samples.mobileplayground.ecommerceframent”;t、 设置屏幕名称(路径);上述代码在电子商务片段的OnActivityCreated中执行。“AnalyticsSampleApp ScreenView”屏幕事件应该在Google分析报告中报告,但实际事件报告显示为com.Google.android.gms.analytics.samples.mobileplayground.EcommerceFragmentIt似乎是,配置xml中的映射不起作用。什么是正确的方法使其正常工作?我不确定我是否理解。如果你看到的是com.google.android.gms.analytics.samples.mobileplayground.ecommercesfragment,那可能是因为它是一个片段,而不是一个活动。由于Android支持API,xml文件目前仅支持活动。谢谢@Avi,请更新此文档。它使用的是家,而不是家,这很令人困惑。标记应该是我们在本主题中讨论的正确标记。@Avi但是您仍然在标记中使用片段,并且在处理片段屏幕视图时似乎无法返回此信息。这是严重的误导。见:(3)
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());
}
});
}
}