了解talkingData

前端之家收集整理的这篇文章主要介绍了了解talkingData前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

什么是talkingData

TalkingData App Analytics于2012年2月正式上线,5月正式发布。是一套针对移动应用推出的数据统计分析平台,旨在解决移动应用数据统计、渠道评估等日常应用运营数据需求。聚美优品,滴滴打车,去哪网,e代驾等企业均在使用,App Analytics的主要优势有:

  • 构建完善的用户分析体系:精确识别分渠道用户导入数量和比例,并提供实时数据反馈,让移动开发者第一时间了解数据变化,快速应对。

  • 进行精细化数据运营:利用漏斗模型,多维钻取等工具,真正将精细化运营落到实处。

  • 提高工作效率:利用便捷数据对比,自动预警通知,渠道打包工具等提高移动开发者的工作效率。

了解背景

项目由于使用人数越来越多,并且人多bug也多(苦逼程序员了),PM迫切需要一个可以分析用户习惯,分析错误报告日志的东西,原始的情况项目使用的是基础的给后台生成个Log文件来打日志的方式,但是局限性很高,而且是用来分析用户错误情况,并没有一个用户的使用场景和习惯的分析,咨询了无线部门的同事后就知道了talkingData

使用

先要原生来封装

安卓

  1. import com.tendcloud.tenddata.TCAgent;
  2. @ReactMethod
  3. public void addTalkingData(String EVENT_ID,String EVENT_LABEL,ReadableMap map) {
  4.  
  5. Map<String,Object> newMap = new HashMap();
  6.  
  7. ReadableMapKeySetIterator iterator = map.keySetIterator();
  8. while (iterator.hasNextKey()) {
  9. String key = iterator.nextKey();
  10. switch (map.getType(key)) {
  11. case Null:
  12. newMap.put(key,JSONObject.NULL);
  13. break;
  14. case Boolean:
  15. newMap.put(key,map.getBoolean(key));
  16. break;
  17. case Number:
  18. newMap.put(key,map.getDouble(key));
  19. break;
  20. case String:
  21. newMap.put(key,map.getString(key));
  22. break;
  23. }
  24. TCAgent.onEvent(reactContext,EVENT_ID,EVENT_LABEL,newMap);
  25. }

IOS

  1. RCT_EXPORT_METHOD(addTalkingData:(NSString *)eventName andLableName:(NSString *)lblName andDic:(NSDictionary *)dic){
  2. [TalkingData trackEvent:eventName label:lblName parameters:dic];
  3. }
  4.  
  5.  
  6. RCT_EXPORT_METHOD(addLog:(NSString *)eventName andDic:(NSDictionary *)dic){
  7. NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init];
  8. NSString *str = @"";
  9. if(dic[@"Date"]!=nil){
  10. str = [NSString stringWithFormat:@"%@%@,",str,dic[@"Date"]];
  11. }
  12. if(dic[@"IsSuccess"]!=nil){
  13. str = [NSString stringWithFormat:@"%@%@,dic[@"IsSuccess"]];
  14. }
  15. if(dic[@"MemberId"]!=nil){
  16. str = [NSString stringWithFormat:@"%@%@,dic[@"MemberId"]];
  17. }
  18. NSString *message = dic[@"Message"];
  19. if(message!=nil){
  20. if([message length]>50){
  21. message = [message substringToIndex:50];
  22. }
  23. str = [NSString stringWithFormat:@"%@%@",message];
  24. }
  25. [mutable setObject:str forKey:@"InfoDetail"];
  26. [TalkingData trackEvent:[NSString stringWithFormat:@"Log_%@",eventName] label:nil parameters:mutable];
  27. }

RN

使用方法就是NativeModule.addTalkingData(event,label,obj);
不过通常都是需要默认带上一些信息,以及不想每个地方都声明一次NativeModule模块,于是就直接单开一个文件把该方法开出去给其他文件使用

  1. 'use strict';
  2.  
  3. import React,{
  4. NativeModules
  5. } from 'react-native';
  6.  
  7. import {
  8. Version,} from './AppConfig';
  9.  
  10.  
  11. const NativeModule = NativeModules.RNModule;
  12.  
  13. module.exports = {
  14. //判断字符长度
  15. strlen(str){
  16. var len = 0;
  17. for (var i=0; i<str.length; i++) {
  18. var c = str.charCodeAt(i);
  19. //单字节加1
  20. if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
  21. len++;
  22. }
  23. else {
  24. len+=2;
  25. }
  26. }
  27. return len;
  28. },talkingData(event,obj){
  29. if(obj.length > 0){
  30. for(var item in obj){
  31. //超过64位字符 截取显示
  32. if(obj[item].length > 64){
  33. obj[item] = obj[item].substring(0,60) + "...";
  34. }
  35. }
  36. }
  37.  
  38. obj.version = Version;
  39. obj.error = obj.error.toString();
  40. try{
  41. obj.error = JSON.stringify(obj.error);
  42. }catch(e){
  43. obj.error = obj.error.toString();
  44. }
  45.  
  46. obj.versionJobNumber = obj.version + '#' + (obj.employee || '');
  47. NativeModule.addTalkingData(event,obj);
  48. }
  49. }

OK,这样外部文件只需要引用这个talkingData文件,使用的时候就是

talkingData('myevent','mylabel',{'name':xxx,'error':'xxx'});

这样流程就走完了,然后看数据的话就可以去talkingData官网去查看,可以看到非常的牛逼啊,版本筛选,渠道筛选啊等等,各种统计分析都存在。同时,如果程序出现错误,也在上面可以查看,方便定位错误地方。截图一张,体会下

猜你在找的React相关文章