Android 在代码中设置屏幕名称
我正在使用Google Analytics for Android,我创建的跟踪器如下:Android 在代码中设置屏幕名称,android,google-analytics,google-analytics-api,google-analytics-firebase,Android,Google Analytics,Google Analytics Api,Google Analytics Firebase,我正在使用Google Analytics for Android,我创建的跟踪器如下: GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); tracker = analytics.newTracker(context.getString(R.string.ga_tracking_id)); tracker.enableAutoActivityTracking(true); <!--
GoogleAnalytics analytics = GoogleAnalytics.getInstance(context);
tracker = analytics.newTracker(context.getString(R.string.ga_tracking_id));
tracker.enableAutoActivityTracking(true);
<!-- The screen names that will appear in reports -->
<screenName name="com.mycompany.MyActivity">MyActivity Screen Name</screenName>
public class MyApp extends Application {
private final String TRACKER_ID = "UA-12345678-1";
private static GoogleAnalytics analytics;
private static Tracker tracker;
public static GoogleAnalytics analytics() {
return analytics;
}
public static Tracker tracker() {
return tracker;
}
@Override
public void onCreate() {
super.onCreate();
analytics = GoogleAnalytics.getInstance(this);
// analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
tracker = analytics.newTracker(TRACKER_ID);
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {}
@Override
public void onActivityStarted(Activity activity) {
tracker().setScreenName("My Activity");
tracker().send(new HitBuilders.ScreenViewBuilder().build());
analytics().reportActivityStart(activity);
}
@Override
public void onActivityResumed(Activity activity) {}
@Override
public void onActivityPaused(Activity activity) {}
@Override
public void onActivityStopped(Activity activity) {
analytics().reportActivityStop(activity);
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
@Override
public void onActivityDestroyed(Activity activity) {}
});
}
}
对于不同的配置,我有不同的TrackingID,所以我不能从xml中膨胀跟踪程序(因为我不能从xml中引用字符串资源)
我已经在代码中启用了自动活动跟踪,但我找不到任何API来自定义将出现在报告中的屏幕名称。相反,我在报告中看到了完整的活动名称
有一种方法,但它似乎意味着手动活动跟踪
如何在代码中模拟tracker xml文件中的屏幕配置?通常是这样的:
GoogleAnalytics analytics = GoogleAnalytics.getInstance(context);
tracker = analytics.newTracker(context.getString(R.string.ga_tracking_id));
tracker.enableAutoActivityTracking(true);
<!-- The screen names that will appear in reports -->
<screenName name="com.mycompany.MyActivity">MyActivity Screen Name</screenName>
public class MyApp extends Application {
private final String TRACKER_ID = "UA-12345678-1";
private static GoogleAnalytics analytics;
private static Tracker tracker;
public static GoogleAnalytics analytics() {
return analytics;
}
public static Tracker tracker() {
return tracker;
}
@Override
public void onCreate() {
super.onCreate();
analytics = GoogleAnalytics.getInstance(this);
// analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
tracker = analytics.newTracker(TRACKER_ID);
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {}
@Override
public void onActivityStarted(Activity activity) {
tracker().setScreenName("My Activity");
tracker().send(new HitBuilders.ScreenViewBuilder().build());
analytics().reportActivityStart(activity);
}
@Override
public void onActivityResumed(Activity activity) {}
@Override
public void onActivityPaused(Activity activity) {}
@Override
public void onActivityStopped(Activity activity) {
analytics().reportActivityStop(activity);
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
@Override
public void onActivityDestroyed(Activity activity) {}
});
}
}
MyActivity屏幕名称
使用自动活动跟踪时,Google Analytics v4 API不提供在代码中设置屏幕名称的方法。您需要禁用自动活动跟踪tracker.enableAutoActivityTracking(false)
并从onActivityStarted()调用GoogleAnalytics.reportActivityStart(activity)
,从onActivityStop()调用
以下是指向应用程序活动生命周期回调的链接:
您的代码将如下所示:
GoogleAnalytics analytics = GoogleAnalytics.getInstance(context);
tracker = analytics.newTracker(context.getString(R.string.ga_tracking_id));
tracker.enableAutoActivityTracking(true);
<!-- The screen names that will appear in reports -->
<screenName name="com.mycompany.MyActivity">MyActivity Screen Name</screenName>
public class MyApp extends Application {
private final String TRACKER_ID = "UA-12345678-1";
private static GoogleAnalytics analytics;
private static Tracker tracker;
public static GoogleAnalytics analytics() {
return analytics;
}
public static Tracker tracker() {
return tracker;
}
@Override
public void onCreate() {
super.onCreate();
analytics = GoogleAnalytics.getInstance(this);
// analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
tracker = analytics.newTracker(TRACKER_ID);
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {}
@Override
public void onActivityStarted(Activity activity) {
tracker().setScreenName("My Activity");
tracker().send(new HitBuilders.ScreenViewBuilder().build());
analytics().reportActivityStart(activity);
}
@Override
public void onActivityResumed(Activity activity) {}
@Override
public void onActivityPaused(Activity activity) {}
@Override
public void onActivityStopped(Activity activity) {
analytics().reportActivityStop(activity);
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
@Override
public void onActivityDestroyed(Activity activity) {}
});
}
}
谢谢,这很聪明。我有一个问题:是否有必要调用分析。reportActivityStart
和分析。reportActivityStop
,因为我们使用跟踪器发送屏幕点击。是否仍要发送
?研究表明,这种方法只有在跟踪器打开自动活动报告时才有价值,但我们刚刚关闭了它,对吗?