Google Analytics
是 Google
推出的应用数据统计实施方案,功能可以说是应有尽有。而且对于 Android
开发来说,使用 Google
自家的统计分析,是不是也非常的名正言顺。
但是,对于中国用户来说,我们没发正常使用 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
相关的,可是这个不是我直接想要的问题啊,但是这里可以确定 GA
和 Firebase
是有一些瓜葛的,后面我都去研究 Firebase
的 Analytic
集成了,就在这个时候,我发现了一个有趣的问题:
官方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'
放到最后面。
配置文件
这里输入你的应用名称,包名之后,就可以下载配置文件了。下载了 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");
自定义维度
右边这个代码明显就是唬人的啦。
// 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,单发会没有效果的。还有后台可能会有延迟,别着急。