1.说明
之前写过一篇关于1.x与2.x版本之前的差异对比,如果之前没有用过1.x版本可跳过。链接:Google Analytics SDK forAndroid v2使用介绍1
在使用之前需要一个ID,用来接受你的应用数据。地址:https://www.google.com/analytics/web/
2.使用方法
2.1 首先需要如下权限,用来上传数据:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.2 在Activity的onstart和onStop中分别添加如下代码:
public void onStart ( ) {
super. onStart ( ) ;
... // The rest of your onStart() code.
EasyTracker. getInstance ( ). activityStart ( this ) ; // Add this method.
}
@Override
public void onStop() {
super.onStop();
… // The rest of your onStop() code.
EasyTracker.getInstance().activityStop(this); // Add this method.
}
2.3 在res/values目录下创建analytics.xml文件并加入类似下面的代码,EasyTracker提供了多个配置参数,可以按自己的需求来添加,所有参数地址为:analytics.xml parameters reference
<resourcesxmlns:tools="https://schemas.android.com/tools"
tools:ignore="TypographyDashes">
<!--Replace placeholder ID with your tracking ID-->
<stringname="ga_trackingId">UA-XXXX-Y </string>
<!--Enable Activity tracking-->
<boolname="ga_autoActivityTracking">true </bool>
<!--Enable automatic exception tracking-->
<boolname="ga_reportUncaughtExceptions">true </bool>
</resources>
3 追踪方法详解
3.1Dispatching 统计数据的发送
//1.1EasyTracker 添加<bool name="ga_autoActivityTracking">true</bool> 不设置默认为30
//1.2代码中设置 GAServiceManager.getInstance().setDispatchPeriod(60);
//2.手动发送: GAServiceManager.getInstance().dispatch();
3.2 获取Tracker实例
3.2.1.使用GoogleAnalytics获得Tracker的实例
//下面方法有两种情况
//1。如果实例中没有传入TrakerId的Tracker,下面方法会创建一个
//2。如果已经有对应TrakerId的Tracker,下面会取出改实例
Tracker tracker =
myInstance. getTracker ( "UA-36603750-2" ) ; //参数为申请到的TrakerId
3.2.2.使用EasyTracker获得Tracker的实例
EasyTracker. getTracker ( ) ; // 确保analytics已经设置了ID
3.2.3.获取Default Tracker
Tracker tracker = myInstance. getDefaultTracker ( ) ;
//设置Default Tracker
Tracker newDefaultTracker = myInstance. getTracker ( "trackingId" ) ;
myInstance. setDefaultTracker (newDefaultTracker ) ;
End Default
3.2.4.说明:如果非EasyTracker实例,不使用EasyTracker时
myInstance. setDebug ( true ) ;
//2.如果想在程序里面某一段时间内停用或开启所有的事件最终可以使用下面代码来设置
myInstance. setAppOptOut ( true ) ; //or false
//下面代码是来处理,设置之后的回调
myInstance. requestAppOptOut ( new AppOptOutCallback ( ) {
@Override
public void reportAppOptOut ( boolean optOut ) {
if (optOut ) {
}
}
} ) ;
//3.如果要设置AppVersion,设置其他的属性,类似下面
tracker. setAppVersion ( "your app version string" ) ;
//End 说明
}
3.3 事件追踪
mTracker. trackEvent (category, action, label, value ) ; // 通过任意的tracker来追踪
3.4 界面追踪
* Screen 1.使用EasyTracker 1.1可以再analytics.xml设置<bool name="ga_autoActivityTracking">true</bool>来自动追踪
* 1.2或者使用EasyTracker.getInstance().activityStart/activityStop来追踪。
* 保证数据的完整性使用1.2更好 2.手动追踪 在onStart中使用如下方法,一般用来追踪Fragment与其他非Activity界面
*/
mTracker.. trackView (screenName ) ;
3.5 社交
* 追踪程序中社交相关操作
* @param network
* 社交网络的名称例如Google+
* @param action
* 操作,例如分享,转发
* @param target
* 可选参数,目标网址
*/
mTracker. trackSocial (network, action, target ) ;
3.6 耗时追踪
* 最终耗时,比如加载图片等资源耗时
*
* @param category
* 事件的类别
* @param name
* 事件的名称,可选参数
* @param label
* 事件的标签,可选参数
* @param time
* 事件耗时
*/
mTracker.. trackTiming (category, time, name, label ) ;
3.7 来源追踪
// Campain Tracking
1.Google Play Campain : set receiver in mainfest 用来追踪程序从Google Play安装的信息
android:name="com.google.analytics.tracking.android.AnalyticsReceiver"
android:exported="true">
<intent-filter>
<actionandroid:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
2.Genaral Campaing Tracking 追踪其他应用或链接打开应用的数据,来源必须把campaign数据放在intent里面
*
* @param context
* @param campaign
字符串类似utm_campaign=general_campaign_test&utm_source=general_campaign_intsig&utm_medium=cpc&utm_term=general_campaign_intent_test&utm_content=ad_variation1
*/
mTracker.. setCampaign (campaign ) ;
<strong > 3 </strong >Referrer Tracking 追踪其他应用或链接打开应用的数据,来源必须把campaign数据放在intent里面
/**
*
* @param context
* @param referrer
* 功能和上面类似,不过参数没有上面严格,任意字符串都可以,不过最好指定,或者只用上面,不然可能会拿到很多无用的数据
*/
mTracker. setReferrer (referrer ) ;
3.8�0�2Crashes and Exceptions 用来追踪程序的异常和崩溃数据,ga2.x增加功能
//2.追踪程序中未捕获的异常:
// 2.1 如果使用的是EastTracker可以在analytics.xml加上<bool name="ga_reportUncaughtExceptions">true</bool>;该值不设置默认为false
// 2.2 使用ExceptionReporter,使用方法如下:
UncaughtExceptionHandler myHandler = new ExceptionReporter (tracker, //Tracker的实例
GoogleAnalytics. getInstance (context ), //GoogleAnalytics实例
Thread. getDefaultUncaughtExceptionHandler ( ) ) ; //uncaught exception handler
Thread. setDefaultUncaughtExceptionHandler (myHandler ) ;
// 结合2.2中如果要获得更多有用的异常等信息,可以通过自定义一个解析类继承ExcaptionParser,并把其实例设置到当前使用的Tracker中去如下:
ExceptionParser parser = new myParser (context ) ;
myTracker. setExceptionParser (parser ) ;
3.9 Ecommerce Track 用来追踪程序里面的交易数据
// 1.构建交易事务对象
// 2.构建交易条目对象,并添加到交易事务对象中
// 3.调用trackTransaction来提交追踪数据
/**
* 确保在交易完成时候提交这样的数据,不然会造成统计数据不准确,比如有一些未完成的订单混在已支付的订单中
*/
public void onPurchaseCompleted ( ) {
//1 创建交易事务
Transaction myTrans = new Transaction. Builder ( "0_123456", // (String)
// 交易事务ID,唯一
( long ) ( 2.16 * 1000000 ) ) // (long) 订单总额
. setAffiliation ( "In-App Store" ) // (String) 订单来源
. setTotalTaxInMicros ( ( long ) ( 0.17 * 1000000 ) ) // (long) 订单税率
. setShippingCostInMicros ( 0 ) // (long) 发运货用去金额
. build ( ) ;
//2 添加交易条目
myTrans. addItem ( new Item. Builder ( "L_789", // (String) 商品的 SKU
"Level Pack: Space", // (String) 商品名称
( long ) ( 1.99 * 1000000 ), // (long) 商品价格
( long ) 1 ) // (long)商品数量
. setProductCategory ( "Game expansions" ) // (String)商品类别
. build ( ) ) ;
//3 提交数据
Tracker myTracker = getTracker ( ) ; // 获取tracker引用.
myTracker. trackTransaction (myTrans ) ; // 提交交易数据
}
// end Ecommerce Track
3.10 Session用户会话追踪,比如用户切换界面,登入登出等
//2大多数的时候需要手动追踪,比如用户等登入
myTracker. setStartSession ( true ) ;
myTracker. trackEcent ( "app_flow", "sign_in", "", null ) ;
3.11 另外还有
//Custom Dimensions & Metrics 为下一个事件自定义参数,比如点击事件,screen事件等,自定义参数
https://developers.google.com/analytics/devguides/collection/android/?hl=zh-CN 是谷歌官网给出的
googleanalytics的解释。其中也包含俩个例子。
现在我讲下googleanalytics 是如何使用的。
1、首先一定要是下载googleanalytics 的sdk 包。
https://developers.google.com/analytics/devguides/collection/android/resources?hl=zh-CN
2、接下来将下载的包导入到工程中,在manifest中加入权限。
<receiver
android:name="com.google.android.apps.analytics.AnalyticsReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
3、在googleanalytics 官网上注册用户,中文网址是
https://accounts.google.com/ServiceLogin?service=analytics&continue=https://www.google.com/analytics/web/?hl%3Dzh-CN%26pli%3D1%23report%2Fvisitors-overview%2Fa34574560w62155135p63695684%2F&followup=https://www.google.com/analytics/web/?hl%3Dzh-CN%26pli%3D1%23report%2Fvisitors-overview%2Fa34574560w62155135p63695684%2F
4、在注册完成后googleanalytics 会自动生成一个UAcode 给你,
Uacord
![Uacord Uacord](https://i-blog.csdnimg.cn/blog_migrate/385731252c32b9489c27b0cce0590547.png)
不要拿我的UACode做实验,因为你不会看到实验的结果的,不要懒自己去注册个。
5、开始在项目中增加google analytics,首先要在Activity oncreate的时候开始跟踪
tracker = GoogleAnalyticsTracker.getInstance();
tracker.startNewSession(UACODE, context);//UACODE就是上面注册时提供的
谷歌官网给我们提供四种跟踪事件的方式。
Pageview TrackingA pageview is a standard means to measure traffic volume to a traditional website. Because mobile apps don't contain HTML pages, you must decide when (and how often) to trigger a pageview request. Also, since pageview requests are designed to report on directory structures, you should provide descriptive names for the requests to take advantage of page path naming in the Content reports inAnalytics. The names you choose will be populated in yourAnalytics reports as page paths even though they are not actually HTML pages, but you can use this to your advantage by structuring paths to provide additional groupings for your calls.Event TrackingIn Analytics, events are designed to track user interaction to web page elements distinctly from pageview requests. You can use the Event Tracking feature ofGoogle Analytics to make additional calls that will be reported in the Event Tracking section of theAnalytics report interface. Events are grouped using categories and may also use per-event labels, which provides flexibility in reporting. For example, a multimedia app could could haveplay/stop/pause actions for its video category and assign a label for each video name. TheGoogle Analytics reports would then aggregate events for all events tagged with thevideo category. For more information on Event Tracking, see the Event Tracking GuideEcommerce TrackingUse the Ecommerce tracking feature to track shopping cart transactions and in-app purchases. To track a transaction, use the Transaction class to represent the overall purchase information as well as the Item class to represent each product in the shopping basket. Once collected, the data can then be viewed in the Ecommerce reporting section of theGoogle Analytics interface. For more information on Ecommerce Tracking, see theEcommerce Tracking Guide.Custom VariablesCustom variables are name-value pair tags that you can insert in your tracking code in order to refineGoogle Analytics tracking. For more information on how you can use custom variables, read theCustom Variable Guide.
以上是谷歌给我们四种跟踪方式的解释。下面是我运用时理解的意思
Pageview 页面跟踪
你可以跟踪你程序总共被打开的次数,或者哪个页面打开的次数,
例如tracker.trackPageView("/Start");在程序的入口添加记录总共程序被所有人打开过多少次。
Event 事件跟踪
一般用于像某个按钮的点击事件的跟踪,或者程序出错地方的跟踪。
例如 tracker.trackEvent(“Button_click”, // Category
"activity_new_btn", // Action
"", // Label
-1); // Value
其实这4个参数就是层级关系,如果想分的很细致的话就都填上你想要的参数,如果只是简单记录的话,用俩个层级就可以了。后俩位默认参数。
下面俩种跟踪在我这次项目中没有应用,一个是媒体跟踪,另外一个是自定义跟踪模式。这个就是根据项目需要吧,如果有会的希望能下回帖中补充下。
需要注意的是
tracker.startNewSession(UACODE, context);// 有俩种方式一种像这样的
tracker.startNewSession(UACODE,20,gaContext);//这是另外一种 中间的20代表20秒后上传此次事件。
但是谷歌建议使用第一种,因为要是第二种的话浪费资源需要时时监控。
但要是用第一的方式需要手动发送事件tracker.dispatch();
千万要在每次发出跟踪时加入tracker.dispatch();否则的话不会被上传到网上数据库中。
6、在google analytics 网站上查看自己的跟踪结果如下图
结果
![结果 结果](https://i-blog.csdnimg.cn/blog_migrate/709e961e58a68383036942e99938aa7c.png)
以上就是我这几天对谷歌分析的理解,头一次写技术贴,写的不好,有不对的地方请赐教。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@Override
public void onStart() {
}
<?xml version="1.0" encoding="utf-8" ?>
<resources>
</resources>
<resources xmlns:tools="https://schemas.android.com/tools"
tools:ignore="TypographyDashes">
3.1
1、
https://developers.google.com/analytics/devguides/collection/android/v2/advanced
2、
a、
<string name="ga_sampleFrequency">50.0</string>
b、
PS:每个应用程序的版本采样率需一致,否则需用过滤器进行版本区分。
3.2
1、
2、
3、
3.3
} catch (IOException e) {
}
1
2
3
Thread.setDefaultUncaughtExcept
ExceptionParser parser = new myParser(context);
// Where myTracker is an instance ofTracker.
myTracker.setExceptionParser(parser);
1.4
1、
Tracker tracker = EasyTracker.getTracker();
tracker.setCustomDimension(1, "myValue");
tracker.trackView();
2、
Tracker tracker = EasyTracker.getTracker();
tracker.setCustomMetric(1, 1);
tracker.trackView();
1.5
1.6
例子:按钮点击跟踪,添加到OnClickListener’s onClick 方法里面
@Override
public void onClick(View v) {
1.7
1、
<-- Enable automatic Activity tracking -->
<bool name="ga_autoActivityTracking">true</bool>
<-- The screen names that will appear in your reporting -->
<string name="com.example.app.BaseActivity">Home</string>
<string name="com.example.app.PrefsActivity">Preferences</string>
2、
@Override
public void onStart() {
}
1.8
在Activity被跟踪期间一直保持打开、且在处于非活动状态超过 30 秒后关闭的会话。开发人员也可以人工定制此限制条件。
1
1、
<-- Set session time out to 60 seconds -- >
1
2
3
4
5
5.1
2、
// Called after a user successfully signs in to your app.在登录成功的代码后面加上
private void onSignIn() {
}
1.9
trackSocial三个字段:
网络(String)——用户用的社交网络(e.g. Sina Weibo, Renren,Facebook,Twitter,Google+ etc.)
操作(String)——用社交按钮进行的操作(e.g. 喜欢,分享,赞,+1 etc.)
目标(可选String)——操作的内容(e.g. 一篇文章,一段视频 etc)
以下例子是跟踪在Twitter上面Tweet开发者分析主页的代码片段:
Tracker tracker = EasyTracker.getTracker();
tracker.trackSocial("Twitter", "Tweet", "https://developers.google.com/analytics");
tracker.trackSocial("Sina Weibo", "分享", "+文章/视频/直播/+URL+Title");
tracker.trackSocial("RenRen", "分享", "+文章/视频/直播/+URL+Title");
1.10
A timing in Google Analytics consists of the following fields:
String
long
String
String
public void onLoad(long loadTime) {
}