Android 集成 Google Analytics 填坑

Google AnalyticsGoogle 推出的应用数据统计实施方案,功能可以说是应有尽有。而且对于 Android 开发来说,使用 Google 自家的统计分析,是不是也非常的名正言顺。

《Android 集成 Google Analytics 填坑》 image.png

但是,对于中国用户来说,我们没发正常使用 Google Service 的,这个是否会影响我们对 Google Analytics 的集成呢?似乎 Google 也考虑到来天朝这个尴尬的问题,所以在集成的文档中有着额外的说明:

注意:Google Analytics(分析)可在不带 Google Play 服务的设备上使用并正常工作。在这种情况下,您仍需下载并使用 Google Play 服务 SDK,而 Google Analytics(分析)将会自动回退为使用本地调度。 了解如何更新项目的清单文件,以便在非 Google Play 设备上启用后台调度

对了,有个事儿忘记说了,官方集成文档支持中文了,所以按着文档一步一步来就好了,so,接下来开始讲解集成过程中可能出现的坑。

依赖的版本问题

根据文档,在项目的 build.gradle 中添加依赖:
classpath 'com.google.gms:google-services:3.0.0' ,然后在对应的model的build.gradle 顶部中添加 apply plugin: 'com.google.gms.google-services',然后添加具体依赖:compile 'com.google.android.gms:play-services-analytics:9.2.0'。是不是很简单很简单的?我一开始也是这样认为的,一刷新同步 gradle 立马就会提示你:

Error:Execution failed for task ‘:app:process_testReleaseGoogleServices’.
Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 9.0.0.

惊喜不惊喜,意外不意外,居然告诉我版本冲突了,那就协调版本呗,最后你就会把 9.2.0 降到 9.0.0 ,然后编译没问题了。

应用崩溃

但是你还没有开始得意的时候就会发现,应用启动会有一些错误信息:Firebase API initialization failure.接着应用可能会闪退,没有任何征兆的崩掉:Method 'void android.support.v4.c.d.<init>()' is inaccessible to class 'com.google.firebase.iid.zzg' 感觉被 Google 亲爹给活生生的坑了一把,所以,这个版本一定要升上去的,不然这个奔溃是没法解决的。

这里再说说搜索的先后问题,因为出现了奔溃的问题,我一心思就在搜索这个奔溃异常相关,但是出来的结果全是 Firebase 相关的,可是这个不是我直接想要的问题啊,但是这里可以确定 GAFirebase 是有一些瓜葛的,后面我都去研究 FirebaseAnalytic 集成了,就在这个时候,我发现了一个有趣的问题:

《Android 集成 Google Analytics 填坑》 image.png

官方Demo里面居然是把这个 plugin 写在最下面的,我也跟着试了下咯,结果还真的解决了,导致版本无法升级的原因就是在Model 里面加入的 apply plugin: 'com.google.gms.google-services'的位置,这个不能放在上面,而是要放在最下面。就是这个问题,挪了位置就会一片晴天。这一点在官方文档上面并没有明确说明。可能好多童鞋可能和我一样都习惯的加在最上面,肯定会被坑得不要不要的。
最后我再尝试去搜了下刚刚版本冲突的关键字,结果答案一下就出来了:https://stackoverflow.com/questions/38127053/google-play-services-gcm-9-2-0-asks-to-update-back-to-9-0-0

至于怎么添加屏幕事件,统计什么的,看官方文档就好了,都是支持中文的了,没有什么难度。简单总结下,其实上面的两个问题就是版本的问题,将版本升级到最新,就没有任何问题了,而在升级过程中提示版本冲突,而最终解决版本冲突的问题就是将apply plugin: 'com.google.gms.google-services'放到最后面。

配置文件

《Android 集成 Google Analytics 填坑》 image.png

这里输入你的应用名称,包名之后,就可以下载配置文件了。下载了 google-services.json 按要求放好,这里的 R.xml.global_tracker 就会自动生成的。

synchronized public Tracker getDefaultTracker() {
    // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
    if (mTracker == null) {
        mTracker = sAnalytics.newTracker(R.xml.global_tracker);
        mTracker.enableExceptionReporting(true);
        mTracker.enableAutoActivityTracking(false);
    }

    return mTracker;
}

如果没有自动生成呢?可能就是你的文件有问题咯,最后实在不行,它还有一个方法直接传入你的追踪ID:

 mTracker = sAnalytics.newTracker("UA-123456789-0");

自定义维度

《Android 集成 Google Analytics 填坑》 WechatIMG3501.jpeg

右边这个代码明显就是唬人的啦。

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("Home Screen");

// Send the custom dimension value with a screen view.
// Note that the value only needs to be sent once.
t.send(new HitBuilders.ScreenViewBuilder()
    .setCustomDimension(1, "premiumUser")
    .build()
);

这个到底要发送多少次,完全看你定义的维度的范围啦,如果统计应用渠道,那么范围设置为「会话」,就在第一个页面统计一次就好了。但是一定要统计一个screen,单发会没有效果的。还有后台可能会有延迟,别着急。

参考文档

    原文作者:lovejjfg
    原文地址: https://www.jianshu.com/p/7eab6ab16c71
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞