package com.gh.gamecenter; import android.app.Activity; import android.app.Application; import android.content.Context; import com.gh.common.constant.Config; import com.gh.common.util.PackageUtils; import com.tencent.bugly.crashreport.CrashReport; 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.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 { public static final boolean DEBUG = true; /** * 初始化各种统计工具,仅在release build(非debug)模式启用统计 * * @param context * @param channel */ public static void init(final Application context, String channel) { // // 神烦这些SDK上报,debug就不开了 // if (DEBUG) return; //TalkingData try { TCAgent.LOG_ON = false; 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); StatConfig.init(context); StatConfig.setInstallChannel(channel); StatConfig.setAntoActivityLifecycleStat(true); StatConfig.setAppVersion(PackageUtils.getPatchVersionName()); // 开启收集服务 StatService.startStatService(context, Config.MTA_APPKEY, com.tencent.stat.common.StatConstants.VERSION); StatService.registerActivityLifecycleCallbacks(context); } catch (MtaSDkException e) { e.printStackTrace(); } // init bugly try { CrashReport.setIsDevelopmentDevice(context, "GH_TEST".equals(channel)); 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(); } // Logger.setLogger(context, new LoggerInterface() { // // @Override // public void setTag(String tag) { // CommonDebug.logMethodWithParams(this, tag); // } // // @Override // public void log(String content) { // CommonDebug.logMethodWithParams(this, content); // } // // @Override // public void log(String content, Throwable t) { // CommonDebug.logMethodWithParams(this, content, t); // } // }); } 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); } public static void onError(Context context, Throwable throwable) { // MTA主动上传错误 try { StatService.reportException(context, throwable); } catch (Exception e) { } // //bugly 作为默认处理异常的类库,已经上报了,此处不重复上报 // try { // CrashReport.postCatchedException(throwable); // } catch (Exception e) { // } //talkingdata try { TCAgent.onError(context, throwable); } catch (Exception e) { } } }