Google Analytics Advanced Configuration - Google Analytics 高级配置
该文档提供了Android SDK v3的部分元素的高级配置说明。
Overview - 概述
Android Google Analytics SDK提供了Tracker类,应用可以用它给Google Analytics设置和发送数据,GoogleAnalytics的单例为你实现的全局配置值提供了接口。
Initialization - 初始化
在开始检测数据之前,你必须通过GoogleAnalytics单例实现至少一个跟踪,你需要提供的参数有Context和Google Analytics的属性ID。
// 使用Google Analytics的属性ID来初始化一个跟踪
GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y")
现在,这个tracker可以给Google Analytics设置和发送数据了。
Setting and Sending Data - 设置和发送数据
通过tracker的set方法把发送给Google Analytics的数据设置为键-值对的形式,然后通过send方法把数据发送给Google Analytics。
/*
* 在tracker上设置map的参数值,并通过调用send方法把屏幕上的视图发送给Google Analytics
*/
Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y");
HashMap<String, String> hitParameters = new HashMap<String, String>();
hitParameters.put(Fields.HIT_TYPE, "appview");
hitParameters.put(Fields.SCREEN_NAME, "Home Screen");
tracker.send(hitParameters);
MapBuilder类简化了构建页面元素点击的进程,在大多数用户安全中,这种方式是推荐的。你可以使用它来发送同样的屏幕视图,但是使用的代码更少:
// 使用MapBuilder.createAppView()方法来发送同样的屏幕视图的点击事件 tracker.(MapBuilder .createAppView() .set(Fields.SCREEN_NAME, "Home Screen") .build() );
Applying Values to Multiple Hits - 给多个屏幕的页面元素应用值
直接设置在tracker上的值将会保持住,并将其应用给多个点击事件,例如:
// 在tracker上设置的屏幕名称,将在发送所有的点击事件时都被应用
tracker.set(Fields.SCREEN_NAME, "Home Screen");
// 为"Home Screen"发送屏幕视图
tracker.send(MapBuilder
.createAppView()
.build()
);
// This event will also be sent with &cd=Home%20Screen.
tracker.send(MapBuilder
.createEvent("UX", "touch", "menuButton", null)
.build()
);
// 清理我们曾经设置过的屏幕名称字段
tracker.set(Fields.SCREEN_NAME, null);
仅仅当你想在多个页面元素上保持某个值时,你才需要把它直接设置在tracker上。在tracker上设置屏幕名称是有意义的,因为同样的值可以被应用给随后发生的子视图和点击事件上。但是,不建议在tracker上设置类似于点击类型的字段,因为它极有可能在每次点击时改变。
Using Multiple Tracker - 使用多个Tracker
在同一个单个的实例里,可以使用多个tracker,这样的做法在把数据发送给多个属性时很有用。
Tracker t1 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1");
// tracker可以被命名。默认地,名称为要被设置的属性ID
Tracker t2 = GoogleAnalytics.getInstance(this).getTracker("altTracker", "UA-XXXX-2";
t1.set(Fields.SCREEN_NAME, "Home Screen");
t2.set(Fields.SCREEN_NAME, getClass().toString());
//给 UA-XXXX-1发送屏幕视图
t1.send(MapBuilder
.createAppView()
.build()
);
// 给UA-XXXX-2发送屏幕视图
t2.send(MapBuilder
.createAppView()
.build()
);
像动态屏幕检测和未捕获的异常检测一样,自动检测元素将不仅仅使用一个tracker给Google Analytics发送数据。如果你使用了这些元素并想使用其它tracker发送数据时,你需要手动的做这些。
Using the Default Tracker - 使用默认的Tracker
Google Analytics包含默认的tracker。被第一个初始化的tracker就会成为默认的tracker,但是它可以被重写。
// Tracker t1成为默认的tracker,因为它是首先被实例化的
Tracker t1 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-1");
Tracker t2 = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-2");
//返回tracker t1.
Tracker defaultTracker = GoogleAnalytics.getInstance(this).getDefaultTracker();
// 点击事件发送给UA-XXXX-1.
defaultTracker.send(MapBuilder
.createAppView()
.set(Fields.SCREEN_NAME, "Home Screen")
.build()
);
// 重写默认的tracker.
GoogleAnalytics.getInstance(this).setDefaultTracker(t2);
// 现在该调用会返回tracker t2.
defaultTracker = GoogleAnalytics.getInstance(this).getDefaultTracker();
// 点击事件发送给UA-XXXX-2.
defaultTracker.send(MapBuilder
.createAppView()
.set(Fields.SCREEN_NAME, getClass().toString())
.build()
);
Sampling - 抽样
你可以启动客户端抽样来限制发送给Google Analytics点击事件的数量。如果你的应用有大量的用户或者给Google Analytics发送了大量的数据,启动抽样可以确保不间断的汇报。
例如,通过EasyTracker和XML启动客户端50%的抽样率:
<string name="ga_sampleFrequency">50.0</string>
以编辑的方式给tracker启用客户端的采样率:
mTracker.set(Fields.SAMPLE_RATE, 50.0d);
为了防止汇报矛盾,你应用的每个视图都应该以相同的抽样进行数据的收集。如果你应用的不同版本使用不同的抽样频率,在你单个应用的不同版本里,为给不同应用版本范围保存各自的数据,你需要配置视图(profile)。
App-level Opt Out - 暴露的应用级别选项
你可以使用暴露出的应用级别的选项,使用它们可以在整个应用里禁用Google Analytics。注意:在应用每次启动时你都需要设置该标识,它的默认值是false。
为了获取暴露的应用级别选项,你可以这样做:
boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();
为了设置暴露的应用级别选项,你可以这样做:
GoogleAnalytics.getInstance(this).setAppOptOut(true);
一种典型的实现是:某个应用可能会监听SharedPreferences文件的改变,并且更改Google Analytics暴露的选项:
SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);
userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals(TRACKING_PREF_KEY)) {
GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));
} else {
// 其它的代码
}
}
});
Testing and Debugging - 测试和调试
Android Google Analytics SDK提供了更简单进行测试和调试的工具。
Dry Run
SDK提供了dryRun标识,如果设置了它,那么就会阻止任何发送给Google Analytics的数据。在你测试或是调试一个实现时,并不想让这些数据出现在你Google Analytics的汇报里,那你应该设置该标识。
// When dry run is set, hits will not be dispatched, but will still be logged as
// though they were dispatched.
GoogeAnalytics.getInstance(this).setDryRun(true);
Logger
Logger接口将会从SDK里处理有用的信息,一共有几个级别:error,warning,info,verbose。
SDK会初始化一个标准的Logger实现,它默认仅仅只会读取打印到console控制台的warning和error类型的信息。这些信息在logcat里是可用的。
// 把日志的级别设置为verbose
GoogleAnalytics.getInstance(this).getLogger().setLogLevel(LogLevel.VERBOSE);
可以使用自定义的Logger的实现:
// 提供自定义的logger
GoogleAnalytics.getInstance(this).setLogger(new CustomLogger ());
Complete Example - 完整的例子
下面的代码展示了初始化Google Analytics实现的必须的代码,并发送了一个屏幕的视图:
package com.example.app;
import com.google.analytics.tracking.android.GAServiceManager;
import com.google.analytics.tracking.android.GoogleAnalytics;
import com.google.analytics.tracking.android.Tracker;
import android.app.Application;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
/*
* 在Application的子类里初始化的Google Analytics的进阶实现。
* 注意:该例假设只给一个Google Analytics属性ID发送属性。
*/
public class MyApp extends Application {
private static GoogleAnalytics mGa;
private static Tracker mTracker;
/*
* Google Analytics配置值.
*/
// Placeholder property ID.
private static final String GA_PROPERTY_ID = "UA-XXXX-Y";
// Dispatch period in seconds.
private static final int GA_DISPATCH_PERIOD = 30;
// Prevent hits from being sent to reports, i.e. during testing.
private static final boolean GA_IS_DRY_RUN = false;
// GA Logger verbosity.
private static final LogLevel GA_LOG_VERBOSITY = LogLevel.INFO;
// Key used to store a user's tracking preferences in SharedPreferences.
private static final String TRACKING_PREF_KEY = "trackingPreference";
/*
* 处理基本Google Analytics初始化的方法。
* 因为所有的Google Analytics的工作都发生在主线程之外,因此该调用不会阻塞主线程
*/
private void initializeGa() {
mGa = GoogleAnalytics.getInstance(this);
mTracker = mGa.getTracker(GA_PROPERTY_ID);
// 设置调试周期
GAServiceManager.getInstance().setLocalDispatchPeriod(GA_DISPATCH_PERIOD);
// 设置dryRun标识
mGa.setDryRun(GA_IS_DRY_RUN);
// 设置Logger级别
mGa.getLogger().setLogLevel(GA_LOG_VERBOSITY);
// Set the opt out flag when user updates a tracking preference.
SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);
userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals(TRACKING_PREF_KEY)) {
GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));
}
}
});
}
@Override
public void onCreate() {
super.onCreate();
initializeGa();
}
/*
* 返回Google Analytics tracker
*/
public static Tracker getGaTracker() {
return mTracker;
}
/*
* 返回Google Analytics实例
*/
public static GoogleAnalytics getGaInstance() {
return mGa;
}
}
接着,当第一个屏幕显示给用户时,屏幕视图被检测。
package com.example.app
import android.app.Activity
/**
* 当Activity给用户显示时,该activity给Google Analytics发送一个屏幕视图
*/
public class HomeScreen extends Activity {
private static final String SCREEN_LABEL = "Home Screen";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Fields set on a tracker persist for all hits, until they are
// overridden or cleared by assignment to null.
MyApp.getGaTracker().set(Fields.SCREEN_NAME, SCREEN_LABEL);
}
@Override
public void onStart() {
super.onStart();
// Send a screen view when the Activity is displayed to the user.
MyApp.getGaTracker().send(MapBuilder
.createAppView.build());
}
}
Google Analytics Advanced Configuration - Google Analytics 高级配置的更多相关文章
- SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-001- DispatcherServlet的高级配置(ServletRegistration.Dynamic、WebApplicationInitializer)
一. 1.如想在DispatcherServlet在Servlet容器中注册后自定义一些操作,如开启文件上传功能,则可重写通过AbstractAnnotationConfigDispatcherSer ...
- Android Google Map v2具体解释:开发环境配置
Android Google Map v2具体解释:开发环境配置 --转载请注明出处:coder-pig 说在前面: 说到地 ...
- Google Colab Notebook 的外部文件引用配置
Google Colab Notebook 的外部文件引用配置 Reference: How to upload the file and read Google Colab 先装工具:google- ...
- Nginx 高级配置-压缩功能
Nginx 高级配置-压缩功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx压缩相关参数概述 1>.gzip on | off; Nginx支持对指定类型的文 ...
- Sonatype Nexus高级配置
Sonatype Nexus的安装配置参见:CentOS系统中安装Nexus并导入已有的构件库.Nexus内置了Jetty容器,${NEXUS_HOME}/bin/jsw目录下包含了各个操作系统的启动 ...
- 更改Dynamics 365 Customer Engagement本地部署的高级配置
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- openwrt advanced configuration
openwrt高级配置(汗 照着标题就翻译过来了) openwrt Kamikaze 8.09的一般配置文件都在目录 /etc/config 下面,可以使用脚本来调用参数和设置参数. 比如 sbin/ ...
- SpringCloud系列十:SpringCloudConfig 高级配置(密钥加密处理(JCE)、KeyStore 加密处理、SpringCloudConfig 高可用机制、SpringCloudBus 服务总线)
1.概念:SpringCloudConfig 高级配置 2.具体内容 在 SpringCloudConfig 之中考虑到所有配置文件都暴露在远程仓库之中的安全性问题,所以提供有安全访问的处理机制,这样 ...
- Nginx 高级配置--关于favicon.ico
Nginx 高级配置--关于favicon.ico 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.浏览器会默认帮咱们访问官网的图标 1>.浏览器访问网站"htt ...
随机推荐
- 教你u盘中毒后如何恢复被隐藏文件
方法1: 1)在桌面空白处单击鼠标右键,新建一个文本文档,如下图所示: 2) 然后将下列一段代码拷贝到文档中: for /f "delims=?" %%a in ('dir /a ...
- 轻松编写 C++ 单元测试
单元测试概述 测试并不只是测试工程师的责任,对于开发工程师,为了保证发布给测试环节的代码具有足够好的质量( Quality ),为所编写的功能代码编写适量的单元测试是十分必要的. 单元测试( Unit ...
- centos7 将服务添加到systemctl
centos7中提供了systemd服务,可以方便的管理各种服务 但是有些通过编译安装的服务systemd里面没有,我们只需要添加一下服务文件即可 以下用nginx作为例子,展示如何添加服务到syst ...
- 【Linux】Ubuntu vi 上下左右变ABCD及 apt-get install报错问题解决方法
新装的ubuntu12.04,本人绝对新手,在使用VI编辑器编辑文本时觉得实在是难用,因此找了几个解决方法如下: 1. 安装vim full版本 由于Ubuntu预安装的是tiny版本,就会导致我们在 ...
- Mapreduce 测试自带实例 wordcount
2.7.3版本的hadoop: jar程序所在目录:$HADOOP_HOME/shar/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar 1.本 ...
- taglib.jsp
<%@ taglib prefix="shiro" uri="/WEB-INF/tlds/shiros.tld" %><%@ taglib p ...
- 向大家推荐两个灰常好用的插件LigerUI和报表控件highcharts
废话不多说上一张图看看,向大家推荐两个灰常好用的插件LigerUI和报表控件highcharts.欢迎大家进技术群讨论:QQ群:15129679 http://ligerui.com/和http:// ...
- maven install时报错Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
事故现场: 解决办法: 一是命令行, mvn clean package -Dmaven.test.skip=true 二是写入pom文件, <plugin> <groupId> ...
- 简单易懂的Dart》 - Dart语言中文简明教程
转自:https://www.blackglory.me/straightforward-dart/ Dart是Google公司发布的网络编程语言,其诞生的目的是为了让广大C类OOP程序员们克服Jav ...
- .Net操作Excel,Work等几种解决方案
(一)传统操作Excel遇到的问题: 1.如果是.NET[使用office组件Microsoft.Iffice.interop.Excel的话],需要在服务器端装Office,且及时更新它,以防漏洞, ...