首页 > 代码库 > 友盟(三)高级功能

友盟(三)高级功能

一、自定义事件
      自定义事件可以实现在应用程序中埋点来统计用户的点击行为,比如:统计用户的点击事件,统计用户都点击了什么;统计用户搜索的关键字,看用户都偏好什么产品等等。自定义事件目前包括:计数事件和计算事件。
     计数事件:计数事件统计事件的发生次数、独立用户数、事件时长及事件各参数的发生次数、时长。
     程序中的某些事件,如登录、分享、下载等,是定性变量(categorical variable),对应的统计项是字符串类型。开发者只需了解它们发生的次数及独立用户数,使用计数事件即可满足。

     计算事件:还有一些事件,如支付金额、内容浏览数量等是连续变量,对应的统计项是数值类型。开发者需要查看这些事件的数值分布特征,这就需要使用计算事件

计算事件可以解决的一些问题:
(1)对某个参数值求和
(2)计算某个参数值的单次均值及单用户均值
(3)近似得到某个参数值的概率分布函数[1]  
(4)近似得到某个参数值的累计分布函数[2]

二、使用计数事件

1.了解计数事件的基本概念

    事件ID是事件的标识,必须先在友盟后台进行创建,在代码中发送事件数据时,事件ID必须和后台一致。

    事件ID不能使用特殊字符和ID、ts、du字段,并且长度在128字节内。

    应用最多可以自定义500个事件(事件ID),每个事件最后又10个key,每个key最多1000g个取值。

2.创建事件ID

技术分享

注意:

①事件ID是事件的标识,所以是唯一的,事件名称是事件ID的解释,方便理解。

②一些定性的操作,比如:登录次数、搜索次数、注册次数、进入购物车次数等,这些用计数事件;但是搜索关键词、账单金额等,这些信息是不确定的,有变化的取值,用计算事件。

3.集成计数事件

①统计事件的发生次数

   调用下面的方法发送数据

MobclickAgent.onEvent(Context context, String eventId);
  参数2:事件ID必须和后台设置的保持一致
  例子:统计用户登录的次数:
MobclickAgent.onEvent(LoginActivity.this, "login");
②统计点击行为的各属性发生次数
MobclickAgent.onEvent(Context context, String eventId, HashMap<String,String> map);
  例子:统计添加到购物车的产品
HashMap<String,String> map = new HashMap<String,String>();
map.put("category","Gadgets");
map.put("sku",""+1225);
map.put("price","$12.89");
MobclickAgent.onEvent(mContext, "add to cart", map);

三、使用计算事件
1.配置
    友盟后台添加事件,配置为计算事件,方式和技术事件一样。
2.统计数值型变量的值的分布
    统计一个数值类型的连续变量,该变量必须为整数,用户每次触发的数值的分布情况,如时间持续时间、每次付款金额等。
3.统计方法
MobclickAgent.onEventValue(Context context, String id, Map<String,String> m, int du)
参数2:事件ID
参数3:事件的属性和取值
参数4:事件的数值,取值范围:-2,147,483,648~+2,147,483,677之间的有符号整数,即int 32类型。如果超出了范围,会造成数据包丢失。
4.例子分析
  友盟示例:统计一次音乐播放,包括音乐类型、作者、时长,可以在音乐播放结束后调用。
int duration = 12000; //开发者需要自己计算音乐播放时长
Map<String, String> map_value = new HashMap<String, String>();
map_value.put("type", "popular");
map_value.put("artist", "JJLin");
MobclickAgent.onEventValue(this, "music", map_value, duration);

四、在webview中统计事件
1.概念
    所谓在webview中统计事件,指的是如果项目中的某个页面使用了webview,并嵌入了html/js代码,并且希望统计html中的点击事件。
2.使用步骤
①实现MobclickAgentJSInterface接口。
    这个接口是友盟提供的,有两种形式:
    如果实例化了WebChromeClient接口
public MobclickAgentJSInterface(Context context, WebView webview, WebChromeClient client)
    如果没有实例化该接口
public MobclickAgentJSInterface(Context context, WebView webview)
②初始化接口实现类的对象
WebView webview = (WebView) findViewById(R.id.webview);
new MobclickAgentJSInterface(Context, webview);

    做完上面2步,其实Android端页面的代码已经集成好了,现在需要做的是在HTML/JS页面中添加点击事件,当用户点击连接的时候,相应JS中的方法,发送数据到友盟。

③在js页面中添加2个方法

<script type="text/javascript">
 
function onEvent(tag, label, duration) {
prompt("event", JSON.stringify({tag:tag,label:label, duration:duration}));
}
 
function onKVEvent(tag, map, duration) {
map.id = tag;
map.duration = duration;
 
prompt("ekv", JSON.stringify( map ));
}
 
</script>
④在html页面中设置点击事件
    这里相应的事件是自己添加的事件。
<a onClick="onEvent(‘click‘)"> SimpleEvent</a>
<a onClick="onEvent(‘click‘,‘button‘)"> EventWithLabel </a>
<a onClick="onEvent(‘play‘,‘music‘,123)"> EventWithLabelAndDuration </a>
<a onClick="onEvent(‘play‘,‘‘,123)"> EventWithDuration </a>
 
<a onClick="onKVEvent(‘buy‘,{‘item‘:‘gun‘})"> KVEvent </a>
<a onClick="onKVEvent(‘play‘,{‘music‘:‘blue‘}, 123)"> KVEventWithDuration </a>
    这里的点击事件和JAVA接口有如下对应关系
//tag 传入字符串
onEvent(tag) -> MobclickAgent.onEvent(Context context, String tag);
// tag ,label 传入字符串
onEvent(tag, label)-> MobclickAgent.onEvent(Context context, String tag, String label);
// tag 传入字符串, 第二个变量 传入空字符串, du 传入 数值类型
onEvent(tag, ‘‘, du) -> MobclickAgent.onEvent(Context context, long duration);
// tag, label 传入字符串, du 传入数值类型
onEvent(tag, label, du) -> MobclickAgent.onEvent(Context context, String tag, String label, long du);
// id 传入字符串, 第二个参数传入 js 对象eg:{‘item‘:‘gun‘,‘type‘:‘weapon‘}
onKVEvent(id, {} ) -> MobclickAgent.onEvent(Context context, HashMap map);
// id 传入字符串, 第二个参数传入 js 对象eg:{‘item‘:‘gun‘,‘type‘:‘weapon‘}, du 传入 数值类型
onKVEvent(id, {} , du) -> MobclickAgent.onEvent(Context context, HashMap map, long du);
3.原理分析
    在java代码中,通过实例化接口对象,开启了WebView事件统计功能,具体发送数据由html/js来完成。
    html/js通过为点击事件响应友盟提供的方法,进行数据的发送工作。在js提供的方法中,最后都会调用prompt()方法进行数据的发送,友盟拦截到数据后,进行统计处理。

五、在线参数
    
六、错误统计
    友盟sdk在V4.6版本之后开始内部集成了错误统计,自动发送错误信息到友盟服务器,不需要开发者去集成。
    sdk通过Thread.UncaughtExceptionHandler捕获程序崩溃日志,并在程序瑕疵启动的时候发送到友盟服务器。友盟的数据统计都是在下一次启动的时候,发送上一次整个过程中的各种统计数据到友盟服务器。
  如果开发者想要自己捕获错误信息,手动发送到友盟服务器,可以调用下的方法:
public static void reportError(Context context, String error)
//或
public static void reportError(Context context, Throwable e)

七、社交统计
1.概念
    社交统计:所谓社交统计就是针对社交行为的垂直统计,可以非常详尽的统计应用中发生的各种社交行为。只需要调用一行代码,就可以获得数据丰富的社交用户分析报表。
 2.使用方法 
  比如:分享产品到新浪微博,调用下面的代码
UMPlatformData platform = new UMPlatformData(UMedia.SINA_WEIBO, "user_id");
platform.setGender(GENDER.MALE); //optional
platform.setWeiboId("weiboId"); //optional
MobclickAgent.onSocialEvent(this, platform);
参数说明:
UMeida meida 平台枚举类型(必填)
String usid 用户的id(必填)
String weiboId 微博id 
String name 用户姓名 
GENDER gender 用户性别

八、其它数据统计API

1.MobclickAgent.setAutoLocation(boolean enable) 设置是否允许收集地理位置信息 (默认true) 2.MobclickAgent.setOpenGLContext(GL10 gl) 设置openGL 信息,辅助统计GPU 信息

3.MobclickAgent.onKillProcess(Context context) 如果开发者调用 Process.kill 或者 System.exit 之类的方法杀死进程,请务必在此之前调用此方法,用来保存统计数据。









友盟(三)高级功能