一、友盟初始化和通用接口

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的情况比较复杂,首先要明确一些概念。

  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("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 使用自定义事件的依赖条件

  1. 使用自定义事件功能请先登陆 【友盟+】官网 ,在 “统计分析->设置->事件” (子账户由于权限限制可能无法看到”设置”选项,请联系主帐号开通权限。)页面中添加相应的事件id(事件id可用英文或数字,不要使用中文和特殊字符且不能使用英文句号”.”您可以使用下划线”_”),然后服务器才会对相应的事件请求进行处理。
  2. 自定义事件的代码需要放在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友盟统计和埋点相关推荐

  1. android友盟注意事项

    android友盟注意事项: activity要在onResume中添加: MobclickAgent.onResume(Context); onPause中添加 MobclickAgent.onPa ...

  2. Android友盟+U-APM快速集成与极致体验

    文章目录 一.前言 二.快速集成 2.1 账号注册 2.2 创建应用 2.3 Demo下载 2.4 Demo导入 2.5 Demo试跑 三.极致体验 3.1 第一个App崩溃 3.2 查看后台崩溃信息 ...

  3. Android 友盟社会化分享的集成与封装

    Android 友盟社会化分享的集成与封装 分享是APP中非常高频的操作之一,在Android的开发环境中,第三方分享框架也有很多.比较流行的包括 极光社会化分享(sharesdk).友盟社会化分享( ...

  4. android友盟埋点,React Native 的友盟统计--打点/埋点

    前言 友盟统计问题折腾了很久, 于是打算整理出来~ 希望能帮到你~~如果对 集成步骤 有疑惑的小伙伴 可以参考往期文章: React Native的友盟集成 目录 统计初始化 自定义事件接口调用 页面 ...

  5. android友盟埋点,友盟数据埋点前,你要知道这些

    一.数据埋点具体应用 1.统计路径 一般APP所有页面都会进行埋点,埋点后友盟会统计用户在页面上的访问路径,通过访问路径可以得到整体用户的行为数据. 2.自定义事件 自定义事件就是具体的埋点,在APP ...

  6. Android 友盟统计集成

    目录 一.参考文档 二.简介 三.集成准备 (1)先注册官网账号 (2)点击[产品]--[移动统计(U-App)]--[进入新版]--[添加应用] (3)获取应用的Appkey 四.开始配置 (1)自 ...

  7. android 友盟统计功能,在Android工程中集成友盟统计

    在Android工程中集成友盟统计 首先需要在友盟官网注册账号并添加新应用,获取Appkey.具体步骤这里不进行叙述. 1.集成准备 首先需要集成友盟统计SDK 有两种方式: 1.下载SDK,并复制到 ...

  8. android 友盟统计 简单上手

    前言 app上线后,一般公司都希望跟踪app在市场上的使用情况.包括新增用户.活跃用户.渠道信息.错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品.这些都可以通过集成友盟 ...

  9. Android友盟增量更新

    1.增量升级的原理  增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包.比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M.我们发现两个版本只有0.1M的 ...

最新文章

  1. Kettle系列文章二(安装配置Kettle+SqlServer+简单的输入输出作业)
  2. 文巾解题 100. 相同的树
  3. mysql查询耗时_一种数据库高耗时查询的自动取消方法与流程
  4. linux系统端口更换,在Linux中怎样修改httpd的端口号
  5. java stream intermediateterminal方法
  6. centos6.9搭建lnmp环境
  7. centos7 搭建本地git_小白也能看懂,30 分钟搭建个人博客!
  8. 本机号码一键登录原理与应用
  9. UG模具设计从入门到精通
  10. Linux开发心得总结5 - Linux下OOM Killer机制详解
  11. Test failed due to unrecognized service account for this product, please submit initial report for t
  12. app窃取用户隐私_窃取您的隐私8步初学者指南
  13. win10安装keras theano
  14. WWDC苹果开发者大会--直播
  15. 智能电动车无感解锁方案:设备篇
  16. 英雄榜再添豪杰!分享喜悦与荣誉
  17. P2P关卡——资金存管与资金托管
  18. CSS: text-decoration
  19. ijkplayer源码分析 视频渲染流程
  20. LTspice基础教程-011.仿真相关文件介绍

热门文章

  1. 可编程彩灯控制器(8X8点阵)
  2. 终于,百度网盘等来了真正的对手
  3. 力天创见Brickstream排队客流统计
  4. 层次分析法------小学生都会的算法~~~
  5. 安全检测80端口Web服务攻击痕迹(上)
  6. position定位的属性
  7. 巨噬细胞膜包裹PLGA纳米粒HCPT-MCNP/MCF-7细胞膜包覆PLGA纳米球共载姜黄素和二氢卟吩e6的研究
  8. 如何在服务器开启PathInfo
  9. 迅睿cms免费开源系统 v4.3.14
  10. c#控件listview