Reputation: 9102
I'm using Google Analytics for Android and I create my tracker like this:
GoogleAnalytics analytics = GoogleAnalytics.getInstance(context);
tracker = analytics.newTracker(context.getString(R.string.ga_tracking_id));
tracker.enableAutoActivityTracking(true);
I have different trackingIds for different configurations so I can't inflate the tracker from the xml (since I can't refer to a string resource from xml).
I have enabled auto activity tracking in code, but I can't find any API to customize screen names which will appear in my reports. Instead I see full activity names in my reports.
There is Tracker.setScreenName method but it seems to imply manual activity tracking.
How do I mimic screen configuration from tracker xml file in code? It usually looks like this:
<!-- The screen names that will appear in reports -->
<screenName name="com.mycompany.MyActivity">MyActivity Screen Name</screenName>
Upvotes: 1
Views: 958
Reputation: 5767
Google Analytics v4 API doesn't provide a way to set the screen names in code when using automatic activity tracking. You need to disable automatic activity tracking tracker.enableAutoActivityTracking(false)
and call GoogleAnalytics.reportActivityStart(activity)
from onActivityStarted()
and GoogleAnalytics.reportActivityStop(activity)
from onActivityStop()
callbacks.
Here is a link to the application activity lifecycle callbacks: http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html
Your code will look something like this:
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) {}
});
}
}
Upvotes: 2