将未捕获的异常发送到谷歌分析

时间:2015-05-08 14:00:05

标签: android google-analytics

我试图将未捕获的异常发送到谷歌分析两周,我找不到一个完整的例子来解释我如何做到这一点,我找到了很多例子,但他们不完整,对我来说不起作用,甚至谷歌-developer不清楚,并没有从A到Z解释它。 有人知道任何解释如何一步一步完成的资源吗?

2 个答案:

答案 0 :(得分:1)

假设您已经为项目设置了Google Analytics并且使用的是Google Analytics V4,那么您只需将以下内容添加到Google Analytics XML配置文件中:

<bool name="ga_reportUncaughtExceptions">true</bool>

来源:Google Analytics Android SDK的Crashes & Exceptions文档。

答案 1 :(得分:0)

集成Google Analytics并仅为Android发送无法处理的例外的最简单方法是:

  1. 将最新的Google Play服务与您的应用集成。 Link to instructions here。不要忘记将播放服务版本元元素添加到您的AndroidManifest.xml中,它是Google Analytics正确功能所必需的:

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>
    
  2. 创建扩展android.app.Application并覆盖onCreate方法的应用类。请参阅Google Analytics github上的minimal Google Analytics Hello World app作为示例。

  3. 在onCreate覆盖的应用中,初始化Google Analytics,创建默认的应用跟踪器并启用异常报告。您不需要xml配置。从代码中做到这一点比较简单:

    private static GoogleAnalytics analytics;
    private static Tracker tracker;
    @Override
    public void onCreate() {
        super.onCreate();
        analytics = GoogleAnalytics.getInstance(this);
        tracker = analytics.newTracker("UA-00000-1"); // Replace with your tracker id
        tracker.enableExceptionReporting(true);
    }
    
  4. 向清单添加必需(和可选)权限。分析需要网络来发送您的点击量。可选的唤醒锁定权限有助于可靠的调度:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <!-- optional wake lock permission -->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    

    5.通过将AndroidManifest.xml中application元素的name属性设置为app类,将您的应用程序注册为Application实现:

    <application android:name=".YourAppClass" ... />
    
  5. 注册推荐的AnalyticsReceiver&amp; AndroidManifest.xml中的AnalyticsService:

    <application>
        ...
        <!-- Enable background dispatching to improve delivery on non-Google Play devices -->
        <receiver
        android:name="com.google.android.gms.analytics.AnalyticsReceiver"
            android:enabled="true">
            <intent-filter>
                <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH"/>
            </intent-filter>
        </receiver>
        <service
            android:name="com.google.android.gms.analytics.AnalyticsService"
            android:enabled="true"
            android:exported="false"/>
        ...
    </application>