全部产品
云市场

移动数据分析-常见问题

更新时间:2018-04-15 19:57:16

Q1: 移动数据分析(Mobile Analytics)有几种版本?不同版本有什么区别?

有通用版和定制版两个版本。

通用版和定制版主要有两个方面的区别:

产品功能上,通用版本提供给开发者普遍性的、通用的分析功能,定制版可以满足开发者个性化的分析需求。

收费策略上,通用版执行统一的、明确的收费标准,定制版收费协商确认。

Q2: 能获取或者查询采集的数据吗?

能,在移动数据分析(Mobile Analytics)申请开通“日志分析”功能,就可以在ODPS查询采集到的数据,一方面可以做BI分析,另一方面可以ETL数据加工。

Q3: ODPS是什么?

大数据计算服务(Open Data Processing Service, 简称ODPS)由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的分布式处理能力,应用于数据分析、挖掘、商业智能等领域。阿里巴巴的数据业务都运行在ODPS上。

ODPS的产品详情页: http://www.aliyun.com/product/odps/

Q4: 什么是日志分析?

日志分析是移动数据分析(Mobile Analytics)为方便用户使用SDK采集到的原始数据而开发的功能,实现了数据“物归原主”,助力用户数据“物尽其用”。

Q5: 授权到ODPS的SDK采集的数据字段有哪些?

当前的字段有:

字段名 类型 注释
app_id string 以appkey@os的形式表示
app_name string app_id对应的app中文名称
app_version string app的应用版本号
channel string 应用分发渠道
imei string 移动设备国际身份码的缩写
imsi string 国际移动用户识别码
brand string 手机或终端的品牌
device_model string 手机或终端的机型
resolution string 手机或终端的屏幕分辨率
os string 操作系统,如: Android、iPhone OS
os_version string 操作系统的版本
carrier string 移动运营商,如:中国移动、中国联通、中国电信
access string 连接的网络,如:2G、3G、Wi-Fi
access_subtype string 网络类型,如:HSPA、EVDO、EDGE、GPRS等
network_type string 根据access,acess_subtype转化后的网络类型
school string 根据client_ip如果为校园网解析出的学校
client_ip string 客户端ip
longitude string 经度,目前SDK没有采集,有需求请联系我们
latitude string 纬度,目前SDK没有采集,有需求请联系我们
country string 根据client_ip解析出的国家或地区
province string 根据client_ip解析出的省、直辖市、自治区
city string 根据client_ip解析出的地级市
district string 根据client_ip解析出的区、县、县级市
session_id string 用户的一次会话id
reach_time string 到达日志服务器的时间,此时间可作为日志时间直接使用,格式为:yyyyMMddHHmmss
event_id string 埋点的事件ID,事件ID为2001,page是表示当前页面,arg1表示上一个页面;事件ID为19999,page是默认page_extend,可埋点重写,arg1表示自定义事件名称
page string 页面
arg1 string 事件参数
arg2 string 事件参数
arg3 string 事件参数
args string 事件参数,调接口setProperty()等埋点的KV属性串
local_time string 终端时间(格式为yyyy-mm-dd hh24:mi:ss)
local_timestamp string 终端时间(格式为数字型的unix 时间,精确到毫秒,可通过from_unixtime函数转换成日期)
utdid string 服务端生成的设备唯一标识符
user_nick string 长登录会员名称,长登录是指只要登录一次就会记住该设备最近一次登录会员,即使该设备下一次打开App且没有登录,其日志也会记录该设备最近一次登录会员
user_id string 长登录会员id
short_user_nick string 短登录会员名称,短登录是指当前处于登录状态的会员
short_user_id string 短登录会员id
ds string 分区字段,表示日期,一般格式为yyyymmdd
hour string 分区字段,表示小时,一般格式为hh

Q6: ODPS上如何使用我的数据?

参加帮助文档

Q7. 如果要加工APP的数据应该怎么操作?

加工数据建议采用数加开发套件,它提供了整套的数据开发解决方案,含数据同步、数据开发、任务调度 等系列组件,是一个比较完善的云数据仓库解决方案。

Q8: SDK采集的字段能否自定义?

只有定制版可以

Q9: 拿到SDK采集的数据后可以做什么?

可以的应用场景如下:

(1)BI个性化分析

(2)自定义报表加工

(3)自主挖掘数据,如:数据建模

Q10: 集成SDK后多久能看到数据?

今日实时及crash实时报表,当天实时可以看到数据;其他报表只能查看T-1及历史数据,最新一天的数据一般在第二天9点之前生成。

另外,某些报表需要在平台上注册登记后才会计算数据,如:自定义参数、关键漏斗等。

Q11:日志如何查看?日志查看

  • MAN SDK没有提供回调接口,可通过查看Log验证埋点数据是否正确上报;
  • SDK上报返回Log格式如下所示:
  1. /*
  2. "t" : 时间戳
  3. "ret" : 错误码(成功上报时为空)
  4. "success" : 是否成功上报("success"或"fail")
  5. */
  6. {"t":time,"ret":"","success":""}
  • 日志是否成功上报可通过success字段查看,若该字段值为fail,可查看ret字段的错误码来定位错误。

Q12:移动数据分析的错误码 ?

错误码(Error Code) 错误描述
E0001 内部错误
E0002 内部错误
E0101 参数不全,缺少appKeyappSecret
E0102 签名(s)不正确
E0104 服务器读取不到客户端数据内容
E0105 请求内容为空
E0106 非标准的 http post 请求
E0107 上传的数据过大(超过500K)
E0108 实体报头域实体正文长度为0
E0111 无效appKey,未找到该appKey对应的appSecret

Q13: SDK log数据包的发送策略?

切后台,启动(第一个页面)时发送数据包,或者缓冲区满(大小动态调整,最小1k)发送数据包。

Q14: SDK log数据包有多大?

SDK数据包发送:

  • 最大:6k
  • 最小:550字节

Q15:集成SDK后为什么没看到日志?

  1. 请确认,SDK的初始化方法是否有正常设置,如appkey,init方法调用(见问题2)等
  2. 确认,日志是否已经被埋点,通过sdk的turnOnDebug功能看本地端log

Q16:SDK相关接口调用的顺序是否影响埋点?

查看对SDK进行初始化的时候, setKey接口是否在init接口之前,如下

  1. iOS:
  2. [UT setKey:@"21771303"appSecret:@“xxxx"];
  3. [UTinit];
  4. Android:
  5. TBS.setKey("21771304", “xxx");
  6. TBS.init();

Q17:日志中有哪些关键字会被过滤呢?

不允许使用\n,\t,|,||,\r字符作为埋点的内容或分隔符

Q18:2001/2101/19999有何规定的业务含义?

  1. 2001代表页面事件,埋点触发时机为当前页面离开时候。

    • Page字段:代表当前页面名称
    • Arg1:代表当前页面从哪个页面跳转过来
    • Arg2:代表当前页面从哪个页面的哪个控件点击过来
    • Arg3:代表当前页面的展示时长(页面消失时间点-页面刚开始显示时间点),单位毫秒
    • Args:更多页面事件相关的参数kv对
  2. 19999:代表自定义事件

    • Arg1:代表自定义事件名称
    • Arg3:代表自定义事件从触发到结束经历的时长,单位毫秒
    • Args:更多自定义事件相关的参数kv对

Q19:ios里面要怎么给view埋页面事件的点?

  1. 调用接口:
  2. view进入时调用:+(void) et_viewEnter:(UIView *) view properties:(NSDictionary *) pProperties;
  3. view离开时调用:+(void) et_viewLeave:(UIView *) view properties:(NSDictionary *) pProperties;
  4. 如果需要给view的页面事件添加一些业务属性,调用:
  5. +(void) et_updateViewProperties:(UIView *) view properties:(NSDictionary *) pProperties;

Q20:19999事件的args字段被encode了,在云梯上要如何解读?

数据开发需要对19999事件的args进行decode,odps上面的udf是url_decode(args,’utf-8')

Q21:可以在crash发生时让用户填入相关的反馈信息吗?

可以的,CrashHandler提供了一组回调函式,应用方可以去实现OnCrashCaught()接口去做定制的处理。例如在OnCrashCaught()中跳到一个activity,让用户去填反馈信息。

Q22:如何关掉”程序开个小差“的toast?

调用TBS.CrashHandler.disableEffect()

Q23:OnCrashCaughtListener中的onCrashCaught和IUTCrashCaughtListner中的有什么不同?

强烈建议使用IUTCrashCaughtListner,如果该版本SDK中有此接口的话。原因是OnCrashCaughtListener回传的Arg会覆盖掉默认的Arg,而IUTCrashCaughtListner中的不会传入默认的Arg,只会让用户回传想要新增的Map而附加到Arg中的args中。

  1. public interface OnCrashCaughtListener {
  2. /**
  3. * 错误捕捉回调
  4. *
  5. * @param thread
  6. * 发生异常的Thread
  7. * @param exception
  8. * 发生异常的Throwable对象
  9. * @param arg
  10. * Usertrack SDK解析以后形成的Arg对象(其中对应上传到服务端的数据)
  11. * @return null:SDK用旧的Arg对象上传到服务端 存在有效值:SDK把新的Arg对象上传到服务端
  12. */
  13. Arg OnCrashCaught(Thread thread, Throwable exception, Arg arg);
  14. }
  15. public interface IUTCrashCaughtListner {
  16. Map<String, Object> onCrashCaught(Thread pThread, Throwable pException);
  17. }

Q24: sdk采集是否有开关?

1)关闭SDK默认自动采集的事件

自动采集的内容有:页面事件,crash事件,可以通过Mobile Analytics SDK接口关闭【具体参看文档】。

iOS自动采集的内容有:crash事件,可以通过Mobile Analytics SDK接口关闭【具体参看文档】。

2)动态关闭自己埋的事件

对于APP发布之后,可以通过我们的产品动态的调整事件采集的比例,目前产品正在开发计划中。

Q25: 如何识别一个用户?

用户即设备,与登录账户无关。Android以IMEI+IMSI标识设备的唯一性;iOS7.0以下版本以MAC地址标识设备的唯一性,7.0及以上版本以UTDID标识设备的唯一性。

Q26: 用户在一台设备上反复卸载并重新安装启动应用,新增用户算几个?

新增用户以首次启动应用的时间为准,无论是否卸载重新安装,都只计算一次,且在首次启动应用那天计算为新增用户。

同理,累计用户数也计为1个用户,不会反复计算。

Q27: 同一个用户由老渠道升级到新渠道,是否会被算到新渠道中?

渠道升级伴随着版本升级,一个用户通过不同渠道从低版本升级到新版本时,新(高)版本(新渠道)的活跃用户+1,老(低)版本(老渠道)的新增用户+1。

例:用户当天从A渠道首次下载APP,当天又通过B渠道升级,那么活跃用户被算到B渠道,新增用户被算到A渠道。

Q28: 什么是活跃用户?哪里可以看到下载和安装的数据?

由于只有用户触发sdk时才会生成统计数据上报,所以下载并激活的数量计算为活跃用户,首次启动应用计算为一个新增用户。

iOS应用在 “基本统计 > AppStore下载量” 可以查询下载量数据,无安装数据。Android无下载量及安装数据。

Q29:App启动次数如何统计?

App启动次数是通过”后台切换事件”统计的:

  • 若App启动后没有做后台切换,无法列入到启动次数的统计。
  • App启动后,做了多次前后台切换,则启动次数统计多次。