172 lines
5.8 KiB
Java
172 lines
5.8 KiB
Java
package com.gh.common.util;
|
||
|
||
import android.app.Activity;
|
||
import android.app.Application;
|
||
import android.content.Context;
|
||
|
||
import com.gh.common.constant.Config;
|
||
import com.halo.assistant.TinkerApp;
|
||
import com.tencent.bugly.beta.tinker.TinkerManager;
|
||
import com.tencent.bugly.crashreport.CrashReport;
|
||
import com.tencent.mta.track.StatisticsDataAPI;
|
||
import com.tencent.stat.MtaSDkException;
|
||
import com.tencent.stat.StatConfig;
|
||
import com.tencent.stat.StatCrashReporter;
|
||
import com.tencent.stat.StatReportStrategy;
|
||
import com.tencent.stat.StatService;
|
||
import com.tencent.tinker.lib.tinker.Tinker;
|
||
import com.tendcloud.tenddata.TCAgent;
|
||
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
import java.util.Properties;
|
||
|
||
/**
|
||
* Created by LGT on 2016/6/15.
|
||
* 数据收集 工具类 (TalkingData、MTA)
|
||
*/
|
||
public class DataUtils {
|
||
|
||
/**
|
||
* 初始化各种统计工具,仅在release build(非debug)模式启用统计
|
||
*
|
||
* @param context
|
||
* @param debug 是否debug模式
|
||
* @param channel
|
||
*/
|
||
public static void init(final Application context, final boolean debug, String channel) {
|
||
|
||
//TalkingData
|
||
try {
|
||
TCAgent.LOG_ON = debug;
|
||
TCAgent.init(context, Config.TALKINGDATA_APPID, channel);
|
||
/**
|
||
*
|
||
* 不要启用!!!!不要启用,全部由{@link com.gh.base.AppUncaughtHandler}处理
|
||
*/
|
||
TCAgent.setReportUncaughtExceptions(false);
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
//MTA
|
||
try {
|
||
/**
|
||
*
|
||
* 不要启用!!!!全部由{@link com.gh.base.AppUncaughtHandler}处理
|
||
*/
|
||
StatConfig.setAutoExceptionCaught(false);
|
||
|
||
StatCrashReporter crashReporter = StatCrashReporter.getStatCrashReporter(context);
|
||
crashReporter.setJavaCrashHandlerStatus(false);
|
||
// crashReporter.setEnableInstantReporting(true);
|
||
|
||
StatConfig.setDebugEnable(debug);
|
||
|
||
// 设置数据上报策略
|
||
if (debug) {
|
||
StatConfig.setStatSendStrategy(StatReportStrategy.INSTANT);
|
||
} else {
|
||
StatConfig.setStatSendStrategy(StatReportStrategy.PERIOD);
|
||
StatConfig.setSendPeriodMinutes(5);
|
||
}
|
||
|
||
// 设置启用Tlink
|
||
StatConfig.setTLinkStatus(true);
|
||
|
||
// 设置启用可视化埋点
|
||
StatisticsDataAPI.instance(context);
|
||
|
||
StatConfig.init(context);
|
||
StatConfig.setInstallChannel(channel);
|
||
StatConfig.setAntoActivityLifecycleStat(true);
|
||
StatConfig.setAppVersion(PackageUtils.getPatchVersionName());
|
||
|
||
StatService.setContext(context);
|
||
StatService.registerActivityLifecycleCallbacks(context);
|
||
// 开启收集服务
|
||
StatService.startStatService(context, Config.MTA_APPKEY, com.tencent.stat.common.StatConstants.VERSION);
|
||
} catch (MtaSDkException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
// init bugly
|
||
try {
|
||
CrashReport.setIsDevelopmentDevice(context, debug);
|
||
|
||
CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context);
|
||
strategy.setEnableANRCrashMonitor(false);
|
||
strategy.setEnableNativeCrashMonitor(false);
|
||
strategy.setAppChannel(channel);
|
||
strategy.setAppVersion(PackageUtils.getPatchVersionName());
|
||
|
||
CrashReport.initCrashReport(context, Config.BUGLY_APPID, debug, strategy);
|
||
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
}
|
||
|
||
public static void onEvent(Context var0, String var1, String var2) {
|
||
TCAgent.onEvent(var0, var1, var2);
|
||
StatService.trackCustomEvent(var0, var1, var2);
|
||
}
|
||
|
||
public static void onPause(Activity var0) {
|
||
TCAgent.onPageEnd(var0, var0.getClass().getSimpleName());
|
||
StatService.onPause(var0);
|
||
}
|
||
|
||
public static void onResume(Activity var0) {
|
||
TCAgent.onPageStart(var0, var0.getClass().getSimpleName());
|
||
StatService.onResume(var0);
|
||
}
|
||
|
||
// 游戏启动
|
||
public static void onGameLaunchEvent(Context context, String gameName, String platform, String page) {
|
||
Map<String, Object> kv = new HashMap<>();
|
||
kv.put("版本", platform);
|
||
kv.put("页面", page);
|
||
onEvent(context, "游戏启动", gameName, kv);
|
||
}
|
||
|
||
public static void onEvent(Context var0, String var1, String var2, Map<String, Object> var3) {
|
||
TCAgent.onEvent(var0, var1, var2, var3);
|
||
Properties prop = new Properties();
|
||
prop.setProperty("label", var2);
|
||
for (String key : var3.keySet()) {
|
||
prop.setProperty(key, var3.get(key) + "");
|
||
}
|
||
StatService.trackCustomKVEvent(var0, var1, prop);
|
||
}
|
||
|
||
// 游戏下载
|
||
public static void onGameDownloadEvent(Context context, String gameName, String platform, String entrance, String status) {
|
||
Map<String, Object> kv = new HashMap<>();
|
||
kv.put("版本", platform);
|
||
kv.put("状态", status);
|
||
onEvent(context, "游戏下载", gameName, kv);
|
||
|
||
Map<String, Object> kv2 = new HashMap<>();
|
||
kv2.put("版本", platform);
|
||
kv2.put("状态", status);
|
||
kv2.put("位置", entrance);
|
||
onEvent(context, "游戏下载位置", gameName, kv2);
|
||
|
||
Map<String, Object> kv3 = new HashMap<>();
|
||
kv3.put(entrance, "下载数");
|
||
kv3.put(entrance, status);
|
||
onEvent(context, "应用数据", gameName, kv3);
|
||
}
|
||
|
||
// 游戏更新
|
||
public static void onGameUpdateEvent(Context context, String gameName, String paltform, String status) {
|
||
Map<String, Object> kv = new HashMap<>();
|
||
kv.put("版本", paltform);
|
||
kv.put("状态", status);
|
||
onEvent(context, "游戏更新", gameName, kv);
|
||
}
|
||
|
||
}
|