1

Я использую Google Analytics для Android и создать свой трекер, как это:Установка ScreenName в коде

GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); 
    tracker = analytics.newTracker(context.getString(R.string.ga_tracking_id)); 
    tracker.enableAutoActivityTracking(true); 

У меня есть разные trackingIds для различных конфигураций, так что я не могу надуть трекер с XML (так Я не могу ссылаться на строковый ресурс из xml).

Я включил отслеживание активности в коде, но я не могу найти API для настройки имен экранов, которые будут отображаться в моих отчетах. Вместо этого я вижу полные имена активности в своих отчетах.

Метод Tracker.setScreenName, но, похоже, подразумевает ручное отслеживание активности.

Как мне сопоставить конфигурацию экрана из файла xml-трекера в коде? Обычно это выглядит следующим образом:

<!-- The screen names that will appear in reports --> 
<screenName name="com.mycompany.MyActivity">MyActivity Screen Name</screenName> 

ответ

2

Google Analytics v4 API не предоставляет способ установить имена экрана в коде при использовании автоматического отслеживания активности. Вам необходимо отключить автоматическое отслеживание активности tracker.enableAutoActivityTracking(false) и позвонить по телефону GoogleAnalytics.reportActivityStart(activity) от onActivityStarted() и GoogleAnalytics.reportActivityStop(activity) от onActivityStop() обратных вызовов.

Вот ссылка на деятельность жизненного цикла приложений обратные вызовы: http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html

Вашего код будет выглядеть примерно так:

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) {} 
     }); 
    } 
} 
+1

Спасибо, что умное. У меня есть вопрос: нужно ли вызывать 'analytics.reportActivityStart' и' analytics.reportActivityStop', так как мы отправляем клик экрана с помощью 'tracker.send'? [Docs] (https://developer.android.com/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStart (android.app.Activity)) показывают, что этот метод ценен только тогда, когда трекер включил автоматическую отчетность, но мы просто отключили ее, не так ли? –

Смежные вопросы