谷歌分析与Android:以编程方式设置ga_reportUncaughtExceptions?

时间:2014-04-03 21:50:15

标签: android xml google-analytics google-analytics-v4

TL;博士

有没有办法在不使用Android中的xml配置的情况下以编程方式为Google Analytics(v4)启用reportUncaughtExceptions?

更长的解释

我在Android应用中使用Google Analytics v4,我需要一种方法来通过构建风格设置两个不同的跟踪ID。我使用的是一般的global_tracker.xml配置(见下文),但我需要一种方法来动态注入"基于风味的跟踪ID。

<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>

为了避免在构建flavor源文件夹中有重复的xml配置,我使用trackingId直接初始化一个跟踪器并以编程方式设置属性。

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

有没有办法在不使用xml配置的情况下启用reportUncaughtExceptions?

4 个答案:

答案 0 :(得分:7)

如果我没有误解你的问题,解决方案如下:

mGATracker是您自己的追踪器。

mGATracker.enableExceptionReporting(true);

希望它有所帮助,谢谢。

参考:https://developers.google.com/android/reference/com/google/android/gms/analytics/Tracker#enableExceptionReporting(boolean)

答案 1 :(得分:4)

否在当前版本的API中无法执行此操作。谢谢你指出来了。我们将调查它并可能将其添加到即将发布的sdk版本中。

答案 2 :(得分:2)

我认为您能够以编程方式执行的最佳操作是拥有两个不同的跟踪器xml配置文件,这两个文件都具有相同的ga_trackingIdga_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)

答案 3 :(得分:1)

您可以通过编程方式设置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

了解详情