MobClick详解

1.使用自定义事件

使用自定义事件功能请先在网站应用管理后台(设置->编辑自定义事件)中添加相应的自定义事件后,服务器才会对相应的自定义事件请求进行处理。这里我们将提供几个简单而通用的接口:

1.1. 事件数量统计

  • 在您希望跟踪的代码部分,调用如下方法:

    [MobClick event:(NSString *)eventId];
    
    

    eventId为当前统计的事件ID。

    示例:统计微博应用中"转发"事件发生的次数,那么在转发的函数里调用

    [MobClick event:@"Forward"];
    
    
    • 考虑事件在一个属性上的取值,可以调用如下方法:
    [MobClick event:(NSString *)eventId attributes:(NSDictionary *)attributes];
    
    

    attributes为当前事件的属性和取值(键值对)。

    示例:统计电商应用中“购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用:

    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"book", @"type", @"3", @"quantity", nil];
    [MobClick event:@"purchase" attributes:dict];
    
    
  • 有时,只需考虑事件在一个属性上的取值,可以调用如下方法:
    [MobClick event:(NSString *)eventId label:(NSString *)label];
    
    

    label为当前事件的取值。

    示例: 统计游戏中“死亡”事件发生的关卡数,那么可以在死亡的函数里调用

    [MobClick event:@"player_dead" label:@"level"];
    
    

1.2. 事件时长统计

有的事件是持续发生的,需要记录其持续的时间,这里提供了两种解决方法。

在事件开始和结束时调用[MobClick beginEvent:][MobClick endEvent:]两个函数

示例: 跟踪播放音乐事件发生的总时间,那么在音乐播放开始时调用:

[MobClick beginEvent:@"music_play"];

在音乐播放结束时调用:

[MobClick endEvent:@"music_play"];

  • 跟踪时长的事件包含多个属性
[MobClick beginEvent:(NSString *)eventId primarykey:(NSString *)keyName attributes:(NSDictionary *)attributes];

[MobClick endEvent:(NSString *)eventId primarykey:(NSString *)keyName];

primarykey这个参数用于和eventId一起标示一个唯一事件,并不会被统计;

对于同一个事件在beginEventendEvent 中要传递相同的eventId 和 primarykey

(为什么要增加primarykey,请看时长统计常见错误案例)

示例: 跟踪每种类型的音乐播放了多久,那么在音乐播放开始时调用

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                      @"popular", @"type", @"JJLin", @"artist",@"registered",@"User_status", nil];
[MobClick beginEvent:@"music" primarykey:@"m7" attributes:dict];

在音乐播放结束时调用:

[MobClick endEvent:@"music" primarykey:@"m7"];

  • 自己计算并上传event时长,在您想跟踪时长的代码部分,调用如下方法

在您想跟踪时长的代码部分,调用如下方法(单位为毫秒)

[MobClick event:(NSString *)eventId durations:(int)millisecond];
[MobClick event:(NSString *)eventId label:(NSString *)label durations:(int)millisecond];
[MobClick event:(NSString *)eventId attributes:(NSDictionary *)attributes durations:(int)millisecond];

时长是友盟统计的一个新功能,使用过程中可能会出现一些常见的错误,开发者应该尽量的避免。

注意

  1. event_id 和 tag 不能使用特殊字符,且长度不能超过128个字节;map中的keyvalue 都不能使用特殊字符,key 不能超过128个字节,value 不能超过256个字节
  2. id, ts, du是保留字段,不能作为eventIdkey的名称。
  3. 每个应用至多添加500个自定义事件,每个event 的 key不能超过10个,每个key的取值不能超过1000个(不允许通过key-value结构来统计类似搜索关键词,网页链接等随机生成的字符串信息)。 如有任何问题,请联系客服qq: 800083942。

2.使用分发渠道分析

您选择多个分发渠道时,例如某Cydia源,或某网站,可以为不同渠道进行分发渠道的设定,分别打包成不同的渠道包,以便统计终端用户的程序安装渠道。

注意:

每台设备仅记录首次安装激活的渠道,在其他渠道再次安装不会重复计量。 所以在测试不同的渠道的时候,请使用不同的设备来分别测试。

示例: 在91和tongbu发布:

- [MobClick startWithAppkey:@"xxxxxxxxxxxxxxx" reportPolicy:REALTIME channelId:@"91store"];

- [MobClick startWithAppkey:@"xxxxxxxxxxxxxxx" reportPolicy:REALTIME channelId:@"tongbu"];

3.使用在线配置功能

这个功能目前可以帮您在网站上动态配置两种类型的参数:

  • 自定义key-value型的键值对
  • 数据发送策略

示例: 动态修改应用的欢迎语,修改应用中开关选项的"on"或"off",以及类似游戏中虚拟物品的价格。

您需要在

[MobClick startWithAppkey:@"xxxxxxxxxxxxxxx"];

之后添加

[MobClick updateOnlineConfig];

这句代码从服务器获取在线参数,并缓存本地。 当在项目里需要获取某个具体参数时调用

[MobClick getConfigParams:@"xxxx"];

xxxx为友盟服务器上事先设置好的key。 如果你想获取所有的在线参数,请使用.

[MobClick getConfigParams];

这两个方法都是从[NSUserDefaults standardUserDefaults]获取缓存的值, 所以上面的[MobClick updateOnlineConfig]方法要先在app启动时被调用。

注意: 
updateOnlineConfig 在app启动时 application:didFinishLaunchingWithOptions: 执行,前后台切换是不会执行的,如果需要在切换时更新在线参数,可以在相关回调里执行updateOnlineConfig 。

如果您需要知道在线参数何时获取完毕,可以监听 UMOnlineConfigDidFinishedNotification ,当这个通知发生时,最新的在线参数会传递给notification.userInfo

如果此时未联网或在线参数获取失败,这个通知是不会被发出的。

您可以用类似下面的代码来完成这个过程:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onlineConfigCallBack:) name:UMOnlineConfigDidFinishedNotification object:nil];

- (void)onlineConfigCallBack:(NSNotification *)notification {
    NSLog(@"online config has fininshed and params = %@", notification.userInfo);
}

最后别忘记调用removeObserver:name:object: 删除这个监听。

4.页面访问路径统计

您可以统计每个View停留时长及路径。
需要配对使用

 - (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [MobClick beginLogPageView:@"PageOne"];
}
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [MobClick endLogPageView:@"PageOne"];
}

注意: 我们针对页面访问进行的是抽样统计,所以只有数据量达到一定规模之后才可以看到

如果您想自己传递时长(单位为秒),我们也提供了方法。

 + (void)logPageView:(NSString *)pageName seconds:(int)seconds;

5.按渠道自动更新检测

在网站上分渠道提交app的版本号,更新日志及openURL后,您只需添加一行代码来完成自动更新检查。
请将下面代码添加到[MobClick startWithAppkey:@"xxxxxxxxxxxxxxx"];之后

[MobClick checkUpdate];

如果想对UIAlertView的标题和按钮文字做多国语言支持,则需要对下面三个词组做翻译。

umUpdateTitle :标题

umUpdateCancel : 放弃按钮

umUpdateOK : 确定按钮

当然您可以更简单的自定义标题和按钮的文字

[MobClick checkUpdate:@"New version" cancelButtonTitle:@"Skip" otherButtonTitles:@"Goto Store"];

如果默认的行为不满足你的需求,您可以完全自定义自动更新检查行为。只需实现

- (void)appUpdate:(NSDictionary *)appInfo;

这个delegate方法。appInfo是服务器传回来的app相关信息。

Xcode4有两个版本号,一个是Version,另一个是Build,对应于Info.plist的字段名分别为CFBundleShortVersionString,CFBundleVersion。 友盟SDK为了兼容Xcode3的工程,默认取的是Build号,如果需要取Xcode4的Version,可以使用下面 的方法。

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
[MobClick setAppVersion:version];

6.自定义事件案例

自定义事件用于追踪用户的行为,包括记录行为发生的次数、持续的时长以及该行为的具体细节。不同的需求可以采用不同的方式来跟踪。以音乐类应用为例,如果想监控music play(播放音乐)事件,那么

6.1.1. 跟踪播放音乐事件发生的总次数和平均每次启动该事件发生的次数,只需要下面一行代码:

[MobClick event:@"music_play"];

6.1.2 跟踪播放音乐事件发生的总时间:

在音乐播放开始的时调用:

[MobClick beginEvent:@"music_play"];

在音乐播放结束时调用:

[MobClick endEvent:@"music_play"];

6.1.3 播放音乐事件还有很多其它特征:比如所播放音乐的风格、表演者,用户播放音乐时的状态(登录或匿名)。了解这些细节需要下面的代码:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:

6.1.4 更进一步,您可以捕捉到每种状态的持续时间,比如每种风格的音乐播放了多久。您需要采用如下方法:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:

在音乐播放开始时调用:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
[MobClick beginEvent:@"music" primarykey :(NSString *)keyName];

在音乐播放结束时调用:

[MobClick endEvent:@"music" primarykey :(NSString *)keyName];

媒体类应用都可以依照上面的方法去追踪事件,比如阅读文章、观看视频、播放音乐等。这样可以清楚地了解哪些作品有更高点击率、更长展示时间,以及更受用户喜欢,从而在内容选择和推荐上更有针对性。

再来看一个游戏案例:这是一个即时策略的塔防游戏,采用的是内置付费模式。

6.2.1. 首先,我们想观察玩家在每次过关时的状态,那么可以监控”user_status”这个事件。

NSDictionary *status = [NSDictionary dictionaryWithObjectsAndKeys:

这样,我们就会知道每次过关时,等级怎样,剩余多少金币,是否购买玩了多少次,玩了多少时间。从而了解玩家在哪一关的流失率较高,接下来应该重点去改善。

6.2.2. 进一步,我们可以验证关卡难度,即监控”player_dead”这个事件。

[MobClick event:@"player_dead" label:@"level"];

可以观察玩家在哪一关的死亡率最高,是否与上面流失率最高的关卡吻合,这样能判断关卡难度是否是造成流失的主要原因。如果是,我们可以通过降低关卡难度来让更多的玩家留在游戏中;如果不是,那么需要从其他方面入手,比如丰富游戏内容增加对玩家吸引力、加强对新手的引导环节等。

6.2.3. 购买监控道具购买是该游戏主要的收入模式,我们非常关心用户购买行为的发生次数,那么我们可以监控”purchase”这个事件:

[MobClick event:@"purchase"];

购买这个事件还有很多细节特征可以记录。比如,玩家是在哪些关购买的道具、购买道具的类型是什么、是否购买成功、购买道具时人物处于什么样的角色等等。您可以这么做:

NSDictionary *purchase = [NSDictionary dictionaryWithObjectsAndKeys:

知道了玩家更喜欢在哪几关购买道具,那么我们可以设法尽量让更多玩家到达那一关;知道了玩家喜欢什么样的道具,大概是什么样的功能和定价,那么我们可以考虑优化道具设计、适当促销,从而优化收益。

原文:http://blog.sina.com.cn/s/blog_a19a961b0101i823.html

时间: 2024-11-10 00:59:19

MobClick详解的相关文章

Spring事务管理(详解+实例)

写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都

转载:DenseNet算法详解

原文连接:http://blog.csdn.net/u014380165/article/details/75142664 参考连接:http://blog.csdn.net/u012938704/article/details/53468483 本文这里仅当学习笔记使用,具体细节建议前往原文细度. 论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:h

MariaDB(MySQL)创建、删除、选择及数据类型使用详解

一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL A

HttpServletResponse和HttpServletRequest详解

HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据.同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息.下表是接口HttpServletRequest的常用方法. 说明:HttpServ

POSIX 线程详解(经典必看)

总共三部分: 第一部分:POSIX 线程详解                                   Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  2000 年 7 月 01 日 第二部分:通用线程:POSIX 线程详解,第 2部分       Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  20

.NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)

阅读目录: 1.环路执行对象模型.碎片化执行模型(假递归式调用) 2.N层对象执行模型(纵横向对比链式扩展方法) 3.LINQ查询表达式和链式查询方法其实都是空壳子 4.详细的对象结构图(对象的执行原理) 5.IQueryable<T>与IQueryProvider一对一的关系能否改成一对多的关系 6.完整的自定义查询 1]. 环路执行对象模型.碎片化执行模型(假递归式调用) 这个主题扯的可能有点远,但是它关系着整个LINQ框架的设计结构,至少在我还没有搞懂LINQ的本意之前,在我脑海里一直频

netstat状态详解

一.生产服务器netstat tcp连接状态................................................................................ 2 1.1生产服务器某个业务LVS负载均衡上连接状态数量............................................... 2 1.2生产服务器某个业务web上连接状态数量...............................................

详解go语言的array和slice 【二】

上一篇  详解go语言的array和slice [一]已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲解到创建新的slice时使用第三个索引来限制slice的容量,在操作新slice时,如果新slice的容量大于长度时,添加新元素依然后使源的相应元素改变.这一篇里我会讲解到如何避免这些问题,以及迭代.和做为方法参数方面的知识点. slice的长度和容量设置为同一个值 如果在创建新的slice时我们把

13.Linux键盘按键驱动 (详解)

版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的4个按键代表键盘中的L.S.空格键.回车键 1.先来介绍以下几个结构体使用和函数,下面代码中会用到 1)input_dev驱动设备结构体中常用成员如下: struct input_dev { void *private; const char *name; //设备名字 const char *ph