在app中添加google analystic

Google Analystic 是一个对mobile app和网站进行统计和分析的平台,对于产品来说,不管是功能的测试还是调整完善都与用户的使用和反馈直接相关。Google Analystic数据统计和分析的结果是用来发现和产品的不足的利器。

如何集成 Google Analytics到android 应用

Google Analystics的集成过程可以概略为两部分:

  • 创建账户

    Google Analystics可以被视为数据收集平台,既然收集了数据,必然是给人看的,少不了的就是相应的管理页面。当然第一步就是要在Google Analystics平台上注册管理账户。 接着就可以在自己账户下配置自己想要跟踪的app。

    整个过程需要的产出只有两个:

    • google-services.json 文件
    • trackID
  • 集成Api:

    • 将 下载下来的google-services.json 文件拷贝到需要被跟踪的app,项目文件下的/app目录
    • 修改build.gradle文件,添加相关依赖

      • 项目外层的build.gradle文件(版本号已更新很多):

        1
        classpath 'com.google.gms:google-services:1.4.0-beta3'
      • app module 下的build.gradle修改:

        1
        2
        3
        4
        5
        6
        // other plugins
        apply plugin: 'com.google.gms.google-services'
        dependencies {
        // other dependencies
        compile 'com.google.android.gms:play-services-analytics:8.1.0'
        }
      • AndroidManifest.xml 给app配置INTERNET和ACCESS_NETWORK_STATE权限

        1
        2
        3
        4
        5
        6
        7
        8
        	<manifest xmlns:android="http://schemas.android.com/apk/res/android" 		package="com.example.analytics">
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission
        android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <application android:name="AnalyticsApplication">
        <!-- The rest of your application manifest -->
        </application>
        </manifest>

在代码中跟踪想要获取的信息

  • 使用Application的子类获取track实例

    1
    2
    3
    4
    5
    6
    7
    synchronized public Tracker getDefaultTracker() { 
    if (mTracker == null) {
    GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
    mTracker = analytics.newTracker(R.xml.global_tracker);
    }
    return mTracker;
    }

跟踪Activity

  • 在Activity中进行跟踪
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// set up the shared Tracker
AnalyticsApplication application = (AnalyticsApplication) getApplication();
mTracker = application.getDefaultTracker();
}
@Override
public void onStart() {
super.onResume(); // Always call the superclass method first
// add log to make sure that GA is being called... Log.i(TAG, "Setting screen name: " + name);
mTracker.setScreenName("Image~" + name);
// send the "hit" to GA
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
}

上面的示例中,包含了两部分,其一是获取tracker的实例,tracker的实例化过程都交给application去做,这样的带来好处的就是对于tracker的统一管理,其二便是通过tracker把screen name 发送到GA,当然更建议的做法就是把tracker的发送screen的这部分功能也放到application类或其余便于管理的地方。对于应用的代码来说,只需要知道自己使用了tracker的tracker screen方法便可,并不需要在每个页面实现同样的方法。