Android友盟统计和埋点
一、友盟初始化和通用接口
1.SDK集成
1.1自动集成
通过在工程build.gradle配置脚本中添加maven线上依赖,导入最新版本组件化基础库和统计SDK。 在Gradle依赖中添加:
dependencies {compile 'com.umeng.sdk:common:latest.integration'compile 'com.umeng.sdk:analytics:latest.integration'
}
如果无法正常集成请添加如下配置:
allprojects {repositories {mavenCentral() }
}
2.SDK初始化
2.1 添加初始化方法
在项目工程的自定义application中的onCreate方法中添加
/**
* 参数1:上下文,不能为空
* 参数2:设备类型,UMConfigure.DEVICE_TYPE_PHONE为手机、UMConfigure.DEVICE_TYPE_BOX为盒子,默认为手机
* 参数3:Push推送业务的secret
*/
UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, "1fe6a20054bcef865eeb0991ee84525b");
注意: 如果项目的Manifest文件中已经配置友盟的appkey和channel,则使用该方法初始化。
参数1:上下文,必须的参数,不能为空
参数2:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机
参数3:Push推送业务的secret,需要集成Push功能时必须传入Push的secret,否则传空
2.2 添加相关权限
<!-- 必须的权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" /><!-- 推荐的权限 -->
<!-- 添加如下权限,以便使用更多的第三方SDK和更精准的统计数据 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.3 代码混淆
-keep class com.umeng.commonsdk.** {*;}
2.4 AndroidManifest清单配置文件方式初始化appkey和channel
<manifest><application ……>……<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/> <meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/> </application>
</manifest>
3.channel渠道命名规范
1.可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。
2.首尾字符不可以为空格
3.不要使用纯数字作为渠道ID
4.最多256个字符
5.”unknown” 及其各种大小写形式,作为友盟保留的字段,不可以作为渠道名
在您查看数据时,渠道会作为一个数据细分的维度。
4.常用接口
4.1 设置Log开关
/**
* 参数: boolean 默认为false,如需查看LOG设置为true
*/
UMConfigure.setLogEnabled(true);
4.2 设置日志加密
/**
* 参数:boolean 默认为false(不加密)
*/
UMConfigure.setEncryptEnabled(true);
5.统计
5.1 Session统计
在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context),
onPause方法中调用 MobclickAgent.onPause(Context)
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
- 确保在所有的Activity中都调用 MobclickAgent.onResume() 和onPause()方法,这两个调用将不会阻塞应用程序的主线程,也不会影响应用程序的性能。
- 注意如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加nPause和nResume方法,否则会造成重复统计,导致启动次数异常增高。(eg.使用TabHost、TabActivity、ActivityGroup时)。
- 当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口:setSessionContinueMillis(long interval) 来自定义这个间隔(参数单位为毫秒)。
- 如果开发者调用kill或者exit之类的方法杀死进程,请务必在此之前调用onKillProcess(Context context)方法,用来保存统计数据。
5.2 页面的统计
5.2.1 只由Activity构成的应用
如果您已经完成5.1步骤之前的代码添加,那么SDK已默认统计了每个Activity的跳转路径。页面统计不需要再添加其他代码。
5.2.2 包含Activity、Fragment或View的应用
统计应用中包含Fragment的情况比较复杂,首先要明确一些概念。
- MobclickAgent.onResume() 和MobclickAgent.onPause() 方法是用来统计应用时长的(也就是Session时长,当然还包括一些其他功能)
- MobclickAgent.onPageStart()和MobclickAgent.onPageEnd()方法是用来统计页面跳转的
在仅有Activity的应用中,SDK 自动帮助开发者调用了 2 中的方法,并把Activity 类名作为页面名称统计。但是在包含fragment的程序中我们希望统计更详细的页面,所以需要自己调用方法做更详细的统计。
首先,需要在程序入口处,调用 MobclickAgent.openActivityDurationTrack(false) 禁止默认的页面统计方式,这样将不会再自动统计Activity。
然后需要手动添加以下代码:
- 使用 MobclickAgent.onResume 和 MobclickAgent.onPause方法统计时长, 这和基本统计中的情况一样(针对Activity)
- 使用 MobclickAgent.onPageStart 和 MobclickAgent.onPageEnd 方法统计页面(针对页面,页面可能是Activity 也可能是Fragment或View)
如果页面是直接由Activity实现的,统计代码大约是这样:
public void onResume() {super.onResume();MobclickAgent.onPageStart("SplashScreen"); //统计页面(仅有Activity的应用中SDK自动调用,不需要单独写。"SplashScreen"为页面名称,可自定义)MobclickAgent.onResume(this); //统计时长
}
public void onPause() {super.onPause();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("MainScreen"); //统计页面,"MainScreen"为页面名称,可自定义
}
public void onPause() {super.onPause();MobclickAgent.onPageEnd("MainScreen");
}
6.自定义事件统计(数据埋点)
6.1 自定义事件字段说明
event id:自定义事件id
key:自定义事件下的参数
value:自定义事件参数下的参数值
6.2 使用自定义事件的依赖条件
- 使用自定义事件功能请先登陆 【友盟+】官网 ,在 “统计分析->设置->事件” (子账户由于权限限制可能无法看到”设置”选项,请联系主帐号开通权限。)页面中添加相应的事件id(事件id可用英文或数字,不要使用中文和特殊字符且不能使用英文句号”.”您可以使用下划线”_”),然后服务器才会对相应的事件请求进行处理。
- 自定义事件的代码需要放在Activity里的nResume–onPause之间,请在sdk初始化之后调用事件,不支持在service中统计。
6.3 计数事件
6.3.1 统计发生次数
在您希望跟踪的代码部分,调用如下方法:
MobclickAgent.onEvent(Context context, String eventId);
context指当前的Activity
eventId为当前统计的事件ID。
示例:统计微博应用中”转发”事件发生的次数,那么在转发的函数里调用
MobclickAgent.onEvent(mContext,"Forward");
6.3.2 统计点击行为各属性被触发的次数
考虑事件在不同属性上的取值,可以调用如下方法:
MobclickAgent.onEvent(Context context, String eventId, HashMap map);
map为当前事件的属性和取值(Key-Value键值对)。
示例:统计电商应用中”购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用:
HashMap<String,String> map = new HashMap<String,String>();
map.put("type","book");
map.put("quantity","3");
MobclickAgent.onEvent(mContext, "purchase", map);
7. 统计代码混淆
如果您的应用使用了混淆, 请添加
-keepclassmembers class * { public <init> (org.json.JSONObject);
}
这是由于SDK中的部分代码使用反射来调用构造函数, 如果被混淆掉, 在运行时会提示”NoSuchMethod”错误。 另外,由于SDK需要引用导入工程的资源文件,通过了反射机制得到资源引用文件R.java,但是在开发者通过proguard等混淆/优化工具处理apk时,proguard可能会将R.java删除,如果遇到这个问题,请在proguard配置文件中添加keep命令如:
-keep public class [您的应用包名].R$*{
public static final int *;
}
把[您的应用包名] 替换成您自己的包名,如com.yourcompany.example。如果您使用5.0.0及以上版本的SDK,请添加如下命令:
-keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);
}
下载地址:
https://download.csdn.net/download/lvluffy/10316292
Android友盟统计和埋点相关推荐
- android友盟注意事项
android友盟注意事项: activity要在onResume中添加: MobclickAgent.onResume(Context); onPause中添加 MobclickAgent.onPa ...
- Android友盟+U-APM快速集成与极致体验
文章目录 一.前言 二.快速集成 2.1 账号注册 2.2 创建应用 2.3 Demo下载 2.4 Demo导入 2.5 Demo试跑 三.极致体验 3.1 第一个App崩溃 3.2 查看后台崩溃信息 ...
- Android 友盟社会化分享的集成与封装
Android 友盟社会化分享的集成与封装 分享是APP中非常高频的操作之一,在Android的开发环境中,第三方分享框架也有很多.比较流行的包括 极光社会化分享(sharesdk).友盟社会化分享( ...
- android友盟埋点,React Native 的友盟统计--打点/埋点
前言 友盟统计问题折腾了很久, 于是打算整理出来~ 希望能帮到你~~如果对 集成步骤 有疑惑的小伙伴 可以参考往期文章: React Native的友盟集成 目录 统计初始化 自定义事件接口调用 页面 ...
- android友盟埋点,友盟数据埋点前,你要知道这些
一.数据埋点具体应用 1.统计路径 一般APP所有页面都会进行埋点,埋点后友盟会统计用户在页面上的访问路径,通过访问路径可以得到整体用户的行为数据. 2.自定义事件 自定义事件就是具体的埋点,在APP ...
- Android 友盟统计集成
目录 一.参考文档 二.简介 三.集成准备 (1)先注册官网账号 (2)点击[产品]--[移动统计(U-App)]--[进入新版]--[添加应用] (3)获取应用的Appkey 四.开始配置 (1)自 ...
- android 友盟统计功能,在Android工程中集成友盟统计
在Android工程中集成友盟统计 首先需要在友盟官网注册账号并添加新应用,获取Appkey.具体步骤这里不进行叙述. 1.集成准备 首先需要集成友盟统计SDK 有两种方式: 1.下载SDK,并复制到 ...
- android 友盟统计 简单上手
前言 app上线后,一般公司都希望跟踪app在市场上的使用情况.包括新增用户.活跃用户.渠道信息.错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品.这些都可以通过集成友盟 ...
- Android友盟增量更新
1.增量升级的原理 增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包.比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M.我们发现两个版本只有0.1M的 ...
最新文章
- Kettle系列文章二(安装配置Kettle+SqlServer+简单的输入输出作业)
- 文巾解题 100. 相同的树
- mysql查询耗时_一种数据库高耗时查询的自动取消方法与流程
- linux系统端口更换,在Linux中怎样修改httpd的端口号
- java stream intermediateterminal方法
- centos6.9搭建lnmp环境
- centos7 搭建本地git_小白也能看懂,30 分钟搭建个人博客!
- 本机号码一键登录原理与应用
- UG模具设计从入门到精通
- Linux开发心得总结5 - Linux下OOM Killer机制详解
- Test failed due to unrecognized service account for this product, please submit initial report for t
- app窃取用户隐私_窃取您的隐私8步初学者指南
- win10安装keras theano
- WWDC苹果开发者大会--直播
- 智能电动车无感解锁方案:设备篇
- 英雄榜再添豪杰!分享喜悦与荣誉
- P2P关卡——资金存管与资金托管
- CSS: text-decoration
- ijkplayer源码分析 视频渲染流程
- LTspice基础教程-011.仿真相关文件介绍