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 kv = new HashMap<>(); kv.put("版本", platform); kv.put("页面", page); onEvent(context, "游戏启动", gameName, kv); } public static void onEvent(Context var0, String var1, String var2, Map 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 kv = new HashMap<>(); kv.put("版本", platform); kv.put("状态", status); onEvent(context, "游戏下载", gameName, kv); Map kv2 = new HashMap<>(); kv2.put("版本", platform); kv2.put("状态", status); kv2.put("位置", entrance); onEvent(context, "游戏下载位置", gameName, kv2); Map 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 kv = new HashMap<>(); kv.put("版本", paltform); kv.put("状态", status); onEvent(context, "游戏更新", gameName, kv); } }