前言:
也是有段时间没有更新博客了,也是自己比较懒,一有事情做一些事就会放一边,没有去动。一个多月没更新了,发现博客访问量有两千多了。想想还是得更新多几篇也是对自己做笔记的加固(其实就是自己记性差)
正文:
当让需要集成这个SDK,是需要账号注册的。没注册的朋友就注册一下。
注:如果是公司的项目最好还是让公司的负责人去申请注册,避免日后个人离职带来不必要的麻烦。如果是自己练习的话,自己顺便注册一个就好了。
接下来就直接来开发步骤吧!!!
第一步:注册账号
额~ 这一步我就省略了... 不难。不是什么国外网站,都是中文都是可以看得懂的
第二步:在友盟中账号创建程序
到这一步项目已经在友盟上创建好了。那接下来就是开始嵌入到APP中了
第三步:将友盟嵌入到自己的APP中
详细文档可以看官方文档:http://dev.umeng.com/analytics/android-doc/integration
我这里写呢,就是集成基本的统计而已。给官方的文档做了浓缩版(简约笔记)
我们将官方的SDK 下载下来并且解压后:进去找到libs 文件
下列jar包中utdid4all-1.0.4.jar 可以根据自己的情况拷贝到项目中去,没报错可以不加,如添加后,出现错误,就麻烦自己百度一下啦。一般就将这个包直接删除就好了,不影响友盟功能的。
Android Studio 嵌入
在Gradle依赖中添加:
如果是用Android Studio工具开发的话就不用管上面的jar包啦。使用更简单的方法,Android Studio 添加下列的依赖,就可以了
dependencies {
compile 'com.umeng.analytics:analytics:latest.integration'
}
如果无法正常集成请添加如下代码 :
allprojects {
repositories {
mavenCentral()
}
}
在 AndroidManifest.xml 中配置权限,以及友盟配置信息
……
将
中的YOUR_APP_KEY
替换为您在友盟后台申请的应用Appkey(Appkey可在统计后台的 统计分析->设置->应用信息页面查看),其他部分均不需改动。
将
中的Channel ID替换为您应用的推广渠道名称,channel id自定义。
例如在豌豆荚渠道推广此包,代码示例:
渠道命名规范
1.可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。
2.首尾字符不可以为空格
3.不要使用纯数字作为渠道ID
4.最多256个字符
5."unknown" 及其各种大小写形式,作为友盟保留的字段,不可以作为渠道名
在您查看数据时,渠道会作为一个数据细分的维度。
非常重要:每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。
所以在测试不同的渠道时,请使用不同的设备来分别测试。也可使用集成测试功能进行测试,了解更多集成测试请点击这里
权限说明
权限 | 用途 |
ACCESS_NETWORK_STATE(必须) | 检测联网方式,区分用户设备使用的是2G、3G或是WiFi |
READ_PHONE_STATE(必须) | 获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户。 |
ACCESS_WIFI_STATE(必须) | 获取用户设备的mac地址,在平板设备上,无法通过imei标示设备,我们会将mac地址作为用户的唯一标识 |
INTERNET(必须) | 允许应用程序联网,以便向我们的服务器端发送数据。 |
如果希望在代码中配置Appkey、Channel、Token(Dplus)等信息,请在程序入口处调用如下方法:
MobclickAgent. startWithConfigure(UMAnalyticsConfig config)
UMAnalyticsConfig初始化参数类,提供多参数构造方式:
UMAnalyticsConfig(Context context, String appkey, String channelId)
UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType)
UMAnalyticsConfig(Context context, String appkey, String channelId, EScenarioType eType,Boolean isCrashEnable)
构造意义:
String appkey:官方申请的Appkey
String channel: 渠道号
EScenarioType eType: 场景模式,包含统计、游戏、统计盒子、游戏盒子
Boolean isCrashEnable: 可选初始化. 是否开启crash模式
在程序入口调用一下方法:
//使用集成测试服务
MobclickAgent.setDebugMode( true );
//捕获程序崩溃日志,并在程序喜下次启动时发送到服务器 如果不需要可以通过此方法关闭
//详细查看官方文档 http://dev.umeng.com/analytics/android-doc/integration#4
MobclickAgent.setCatchUncaughtExceptions(false);
// SDK在统计Fragment时,需要关闭Activity自带的页面统计,
// 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。
MobclickAgent.openActivityDurationTrack(false);
//场景类型设置接口。
/**
* EScenarioType. E_UM_NORMAL 普通统计场景类型
* EScenarioType. E_UM_GAME 游戏场景类型
* EScenarioType. E_UM_ANALYTICS_OEM 统计盒子场景类型
* EScenarioType. E_UM_GAME_OEM 游戏盒子场景类型
*/
MobclickAgent.setScenarioType(Context context, EScenarioType etype)
统计应用中包含Fragment的情况比较复杂,首先要明确一些概念。
1. MobclickAgent.onResume()
和MobclickAgent.onPause()
方法是用来统计应用时长的(也就是Session时长,当然还包括一些其他功能)
2.MobclickAgent.onPageStart()
和MobclickAgent.onPageEnd()
方法是用来统计页面跳转的
在仅有Activity的应用中,SDK 自动帮助开发者调用了 2
中的方法,并把Activity 类名作为页面名称统计。但是在包含fragment的程序中我们希望统计更详细的页面,所以需要自己调用方法做更详细的统计。
首先,需要在程序入口处,调用 MobclickAgent.openActivityDurationTrack(false)
禁止默认的页面统计方式,这样将不会再自动统计Activity。
然后需要手动添加以下代码:
1. 使用 MobclickAgent.onResume 和 MobclickAgent.onPause方法统计时长, 这和基本统计中的情况一样(针对Activity)
2. 使用 MobclickAgent.onPageStart 和 MobclickAgent.onPageEnd 方法统计页面(针对页面,页面可能是Activity 也可能是Fragment或View)
如果页面是直接由Activity实现的,统计代码大约是这样:
public void onResume() { super.onResume();
//MobclickAgent.onPageStart(getClass().getSimpleName); MobclickAgent.onPageStart("SplashScreen"); //统计页面(仅有Activity的应用中SDK自动调用,不需要单独写。"SplashScreen"为页面名称,可自定义) MobclickAgent.onResume(this); //统计时长 } public void onPause() { super.onPause();
//MobclickAgent.onPageEnd(getClass().getSimpleName()); MobclickAgent.onPageEnd("SplashScreen"); // (仅有Activity的应用中SDK自动调用,不需要单独写)保证 onPageEnd 在onPause 之前调用,因为 onPause 中会保存信息。"SplashScreen"为页面名称,可自定义 MobclickAgent.onPause(this); }
如果页面是使用FragmentActivity + Fragment实现的,需要在 FragmentActivity 中统计时长:
public void onResume() {
super.onResume();
MobclickAgent.onResume(this); //统计时长
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
并在其包含的 Fragment 中统计页面:
public void onResume() { super.onResume();
//MobclickAgent.onPageStart(getClass().getSimpleName);
//MobclickAgent.onResume(this) MobclickAgent.onPageStart("MainScreen"); //统计页面,"MainScreen"为页面名称,可自定义 } public void onPause() { super.onPause();
//MobclickAgent.onPageEnd(getClass().getSimpleName());
//MobclickAgent.onPause(this); MobclickAgent.onPageEnd("MainScreen"); }
注意:这些方法的调用,需要保证线性不交叉,每个 onResume 都对应一个 onPause ,每个 Start 都有一个 End 配对。这样才能保证每个页面统计的正确,关于页面统计API的最佳实践说明见这里 。
自此已经是嵌入完成了,下面有更详细的一些其他的统计。
第四步:完成
更多Android 植入友盟统计:
Android+WebView 加入统计:点击打开链接
计数统计事件:点击打开链接
自定义事件统计(计数事件):点击打开链接
代码混淆:点击打开链接
账号统计:点击打开链接
实现友盟多渠道打包:点击打开链接