瞭解talkingData

什麼是talkingData

TalkingData App Analytics於2012年2月正式上線,5月正式發佈。是一套針對移動應用推出的數據統計分析平臺,旨在解決移動應用數據統計、渠道評估等平常應用運營數據需求。聚美優品,滴滴打車,去哪網,e代駕等企業均在使用,App Analytics的主要優點有:react

  • 構建完善的用戶分析體系:精確識別分渠道用戶導入數量和比例,並提供實時數據反饋,讓移動開發者第一時間瞭解數據變化,快速應對。程序員

  • 進行精細化數據運營:利用漏斗模型,多維鑽取等工具,真正將精細化運營落到實處。react-native

  • 提升工做效率:利用便捷數據對比,自動預警通知,渠道打包工具等提升移動開發者的工做效率。工具

瞭解背景

項目因爲使用人數愈來愈多,而且人多bug也多(苦逼程序員了),PM迫切須要一個能夠分析用戶習慣,分析錯誤報告日誌的東西,原始的狀況項目使用的是基礎的給後臺生成個Log文件來打日誌的方式,可是侷限性很高,並且是用來分析用戶的錯誤狀況,並無一個用戶的使用場景和習慣的分析,諮詢了無線部門的同過後就知道了talkingDataspa

使用

先要原生來封裝日誌

安卓

import com.tendcloud.tenddata.TCAgent;
    @ReactMethod
    public void addTalkingData(String EVENT_ID, String EVENT_LABEL, ReadableMap map) {

        Map<String, Object> newMap = new HashMap();

        ReadableMapKeySetIterator iterator = map.keySetIterator();
        while (iterator.hasNextKey()) {
            String key = iterator.nextKey();
            switch (map.getType(key)) {
                case Null:
                    newMap.put(key, JSONObject.NULL);
                    break;
                case Boolean:
                    newMap.put(key, map.getBoolean(key));
                    break;
                case Number:
                    newMap.put(key, map.getDouble(key));
                    break;
                case String:
                    newMap.put(key, map.getString(key));
                    break;
        }
        TCAgent.onEvent(reactContext, EVENT_ID, EVENT_LABEL, newMap);
    }

IOS

RCT_EXPORT_METHOD(addTalkingData:(NSString *)eventName andLableName:(NSString *)lblName andDic:(NSDictionary *)dic){
  [TalkingData trackEvent:eventName label:lblName parameters:dic];
}


RCT_EXPORT_METHOD(addLog:(NSString *)eventName andDic:(NSDictionary *)dic){
  
  NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init];
  
  NSString *str = @"";
  if(dic[@"Date"]!=nil){
    str = [NSString stringWithFormat:@"%@%@,",str,dic[@"Date"]];
  }
  if(dic[@"IsSuccess"]!=nil){
    str = [NSString stringWithFormat:@"%@%@,",str,dic[@"IsSuccess"]];
  }
  if(dic[@"MemberId"]!=nil){
    str = [NSString stringWithFormat:@"%@%@,",str,dic[@"MemberId"]];
  }
  NSString *message = dic[@"Message"];
  if(message!=nil){
    if([message length]>50){
      message = [message substringToIndex:50];
    }
    str = [NSString stringWithFormat:@"%@%@",str,message];
  }
  
  [mutable setObject:str forKey:@"InfoDetail"];
  
  [TalkingData trackEvent:[NSString stringWithFormat:@"Log_%@",eventName] label:nil parameters:mutable];
  
}

RN

使用方法就是NativeModule.addTalkingData(event,label,obj);
不過一般都是須要默認帶上一些信息,以及不想每一個地方都聲明一次NativeModule模塊,因而就直接單開一個文件把該方法開出去給其餘文件使用code

'use strict';

import React, {
    NativeModules
} from 'react-native';

import {
    Version,
} from './AppConfig';


const NativeModule = NativeModules.RNModule;

module.exports = {
  //判斷字符長度
  strlen(str){
    var len = 0;
    for (var i=0; i<str.length; i++) {
     var c = str.charCodeAt(i);
    //單字節加1
     if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
       len++;
     }
     else {
      len+=2;
     }
    }
    return len;
  },

  talkingData(event,label,obj){
    if(obj.length > 0){
       for(var item in obj){
         //超過64位字符 截取顯示
         if(obj[item].length > 64){
           obj[item] = obj[item].substring(0,60) + "...";
         }
       }
    }

    obj.version = Version;
    obj.error = obj.error.toString();
    try{
          obj.error = JSON.stringify(obj.error);
      }catch(e){
          obj.error = obj.error.toString();
      }

    obj.versionJobNumber = obj.version + '#' + (obj.employee || '');
    
      NativeModule.addTalkingData(event,label,obj);
    
  }
}

OK,這樣外部文件只須要引用這個talkingData文件,使用的時候就是orm

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

這樣流程就走完了,而後看數據的話就能夠去talkingData官網去查看,能夠看到很是的牛逼啊,版本篩選,渠道篩選啊等等,各類統計分析都存在。同時,若是程序出現錯誤,也在上面能夠查看,方便定位錯誤地方。截圖一張,體會下ip

clipboard.png

相關文章
相關標籤/搜索