如何向Google Analytics v4报告例外情况和UncaughtExcept以及详细说明?

时间:2015-07-17 09:10:43

标签: android exception google-analytics acra google-analytics-v4

我知道这个问题已经多次以不同的形式提出,但没有找到适合GAv4的工作和更新解决方案。

到目前为止,我已经关注了这些link1link2,以跟踪包含一些自定义更改的异常报告,

public class MyApplication extends Application {
    /**
     * The Analytics singleton. The field is set in onCreate method override
     * when the application class is initially created.
     */
    private static GoogleAnalytics analytics;

    /**
     * The default app tracker. The field is from onCreate callback when the
     * application is initially created.
     */
    private static Tracker tracker;

    /**
     * Access to the global Analytics singleton. If this method returns null you
     * forgot to either set android:name="<this.class.name>" attribute on
     * your application element in AndroidManifest.xml or you are not setting
     * this.analytics field in onCreate method override.
     */
    public static GoogleAnalytics analytics() {
        return analytics;
    }

    /**
     * The default app tracker. If this method returns null you forgot to either
     * set android:name="<this.class.name>" attribute on your application
     * element in AndroidManifest.xml or you are not setting this.tracker field
     * in onCreate method override.
     */
    public static Tracker tracker() {
        return tracker;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        analytics = GoogleAnalytics.getInstance(this);

        // TODO: Replace the tracker-id with your app one from
        // https://www.google.com/analytics/web/
        tracker = analytics.newTracker("UA-**********");

        // Provide unhandled exceptions reports. Do that first after creating
        // the tracker
        tracker.enableExceptionReporting(true);

        // Enable Remarketing, Demographics & Interests reports
        // https://developers.google.com/analytics/devguides/collection/android/display-features
        tracker.enableAdvertisingIdCollection(true);    
    }
}

在GAv4"描述"发送异常限制为100个字符,但有些我已成功设法扩展该限制并发送stackTrace,如下所示,

        try {

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

            // Get full error message from prinStrackTrace
            StringWriter errors = new StringWriter();
            e.printStackTrace(new PrintWriter(errors));

            String errorMessage = "em-" + extraMessage + "||pst-"
                    + errors.toString();
            Log.e(TAG, "errorMessage = " + errorMessage);
            MyApplication.tracker().send(
                    new HitBuilders.ExceptionBuilder()
                            .setDescription(errorMessage).setFatal(false)
                            .build());
        }
    }

这是用于捕获异常,但现在我想发送未捕获异常的详细堆栈跟踪崩溃报告。这个link有助于获得未被捕获的异常,但在GA中没有提供太多细节。我确实找到了这个approach,但这基本上是针对GAv2。

问题1:那么我上面发送的捕获异常堆栈跟踪的方法是否适用于未来的GA,或者是否有其他方法可以获得错误,类名和行号的确切原因的详细描述?

Q2:如何发送完整的堆栈跟踪或任何确切有用的描述来查找未捕获异常的原因?

问题3:我了解ACRA,但有免费backend吗?

2 个答案:

答案 0 :(得分:1)

您可以使用custom dimension从Exception对象中捕获任何其他信息。

添加:

.setCustomDimension(1, e.getMessage())

到你的ExceptionBuilder代码。请注意,您需要先在Web界面中创建自定义维度。

答案 1 :(得分:0)

问题1:因为没有人知道未来的GA版本会是什么样的,这个问题是无法回答的。

问题3:ACRA后端有开源实现。看看https://github.com/ACRA/acra/wiki/Backends。但是你需要为他们组织托管。或者,许多商业版本提供了相当合理的免费配额和合理的计划。