Google Analytics с Android: Программно установить ga_reportUncaughtExceptions?

tl;dr

Есть ли способ программно включить reportUncaughtExceptions для Google Analytics (v4) без использования конфигурации xml в Android?

Более длинное объяснение

Я использую Google Analytics v4 в приложении для Android, и мне нужен способ установить два разных идентификатора отслеживания в зависимости от сборки. Я использовал общую конфигурацию global_tracker.xml (см. ниже), хотя мне нужен способ «динамически вводить» идентификатор отслеживания на основе вкуса.

<resources xmlns:tools="http://schemas.android.com/tools"
           tools:ignore="TypographyDashes">
    <integer name="ga_sessionTimeout">300</integer>
    <bool name="ga_autoActivityTracking">true</bool>
    <bool name="ga_reportUncaughtExceptions">true</bool>

    <!--  The following value should be replaced with correct property id. -->
    <string name="ga_trackingId">UA-xxxxxx-xx</string>
</resources>

Чтобы избежать дублирования конфигураций xml в исходных папках сборки, я инициализирую трекер напрямую с помощью trackingId и устанавливаю атрибуты программно.

mGATracker = analytics.newTracker(R.string.ga_code); // this is dynamic depending on flavor
mGATracker.setSessionTimeout(300);
mGATracker.enableAutoActivityTracking(true);

Есть ли способ включить reportUncaughtExceptions без использования конфигурации xml?


person loeschg    schedule 03.04.2014    source источник


Ответы (4)


Нет. В текущей версии API это невозможно. Спасибо, что указали на это. Мы рассмотрим его и, возможно, добавим в одну из будущих версий SDK.

person Avi    schedule 04.04.2014
comment
@Avil Я так разочарован, узнав об этом. Это означает, что без создания файла tracker.xml мы не сможем динамически включить исключение отчета в Google Analytics v4. - person anticafe; 27.04.2014

Если я правильно понял ваш вопрос, решение приведено ниже:

mGATracker — это ваш собственный трекер.

mGATracker.enableExceptionReporting(true);

Надеюсь, это поможет, спасибо.

Ссылка: https://developers.google.com/android/reference/com/google/android/gms/analytics/Tracker#enableExceptionReporting(boolean)

person Sonny Ng    schedule 20.10.2014
comment
Глядя на Tracker.java, он делает то, что ниже рекомендует Bladerunner, и, похоже, работает. - person BLeB; 08.12.2015

Я думаю, что лучшее, что вы сможете сделать программно, это иметь два разных xml-файла конфигурации трекера, оба с одним и тем же ga_trackingId, но с разными значениями для ga_reportUncaughtExceptions. Используйте метод GoogleAnalytics.newTracker() с ресурсом xml для правильного файла конфигурации вместо trackingId.

if (buildFlavor == 1)
    mGATracker = analytics.newTracker(R.xml.tracker_config_1)
else
    mGATracker = analytics.newTracker(R.xml.tracker_config_2)

См. http://developer.android.com/reference/com/google/android/gms/analytics/GoogleAnalytics.html#newTracker(int)

person XtopherSD    schedule 04.04.2014
comment
Спасибо. Я знаю, что это возможно. Я надеялся избежать дублирования всей конфигурации xml для каждого варианта... единственная разница между ними - это идентификатор отслеживания. - person loeschg; 04.04.2014

Вы можете настроить обработчик исключений Google Analytics программно.

UncaughtExceptionHandler myHandler = new ExceptionReporter(
    myTracker,                                        // Currently used Tracker.
    Thread.getDefaultUncaughtExceptionHandler(),      // Current default uncaught exception handler.
    context);                                         // Context of the application.

// Make myHandler the new default uncaught exception handler.
Thread.setDefaultUncaughtExceptionHandler(myHandler);

Подробнее см. на странице https://developer.android.com/reference/com/google/android/gms/analytics/ExceptionReporter.html

person bladerunner    schedule 22.05.2014