using System; using System.Collections.Generic; public class StaticsManager { public enum ConsumeType { None, Purchase, Use, Reward, } public enum ConsumeModule { None, Charge, Shop, Checkin, } private static StaticsManager instance; public static StaticsManager GetInstance() { if (instance == null) instance = new StaticsManager(); return instance; } public static string currencyType = "USD"; //请使用国际标准组织 ISO 4217 中规范的 3 位字母代码标记货币类型。点击查看参考例:人民币 CNY;美元 USD;欧元 EUR public void StopSession() { #if UNITY_EDITOR if (DataEyeGA.isAccountSet) DataEyeGA.Online(); #endif //AnySDKAnalytics.getInstance().stopSession(); } public void SetSessionInterval(long interval) { //AnySDKAnalytics.getInstance().setSessionContinueMillis(interval); } public void SetCaptureUncaughtException(bool value) { //AnySDKAnalytics.getInstance().setCaptureUncaughtException(value); } //public void SetAccount(int userId, string nickname, AccountType accountType, int teamRank, AccountOperate operate) //{ // Dictionary paramMap = new Dictionary(); // paramMap["Account_Id"] = userId.ToString(); // paramMap["Account_Name"] = nickname; // paramMap["Account_Type"] = Convert.ToString((int)accountType); // paramMap["Account_Level"] = teamRank.ToString(); // paramMap["Account_Operate"] = Convert.ToString((int)operate); // paramMap["Server_Id"] = Config.GetHostIp(); // //AnySDKParam param = new AnySDKParam(paramMap); // //AnySDKAnalytics.getInstance().callFuncWithParam("setAccount", param); //} /// /// 设置帐号 /// /// 帐号id /// 帐号类型 public void SetAccount(string accountId, DataEyeGA.AccountType accountType) { if (DataEyeGA.isInited) { DataEyeGA.SetAccount(accountId, accountType); DataEyeGA.Online(); } } /// /// 支付请求 /// /// 订单唯一标示符,目前建议使用时间戳 /// 商品名 /// 现金数额(元) /// 请使用国际标准组织 ISO 4217 中规范的 3 位字母代码标记货币类型。点击查看参考例:人民币 CNY;美元 USD;欧元 EUR /// 支付的途径,最多 16 个字符。例如:“支付宝”“苹果官方”“XX 支付 SDK /// 虚拟币数值 public void ChargeRequest(int requestTimeStamp, string productName, int currencyAmount, string currencyType, string paymentType, int virtualCurrencyAmount) { //Dictionary map = new Dictionary(); //map["Order_Id"] = requestTimeStamp.ToString(); //map["Product_Name"] = productName; //map["Currency_Amount"] = currencyAmount.ToString(); //map["Currency_Type"] = currencyType; //map["Payment_Type"] = paymentType; //map["Virtual_Currency_Amount"] = virtualCurrencyAmount.ToString(); //AnySDKParam param = new AnySDKParam(map); //AnySDKAnalytics.getInstance().callFuncWithParam("onChargeRequest", param); } /// /// 支付成功 /// /// 订单唯一标示符,目前建议使用时间戳 public void ChargeSuccess(int requestTimeStamp) { //AnySDKParam param = new AnySDKParam(requestTimeStamp.ToString()); //AnySDKAnalytics.getInstance().callFuncWithParam("onChargeSuccess", param); } /// /// 支付请求 /// /// 订单唯一标示符,目前建议使用时间戳 /// 商品名 /// 现金数额(元) /// 请使用国际标准组织 ISO 4217 中规范的 3 位字母代码标记货币类型。点击查看参考例:人民币 CNY;美元 USD;欧元 EUR /// 支付的途径,最多 16 个字符。例如:“支付宝”“苹果官方”“XX 支付 SDK /// 虚拟币数值 public void ChargeSuccess(int requestTimeStamp, string productName, int currencyAmount, string currencyType, string paymentType, string virtualCurrencyAmount) { DataEyeGA.Pay(currencyAmount, currencyType, productName, requestTimeStamp.ToString()); //TODO: 获取玩家自身的钻石数量 DataEyeGA.VirtualCurrency(virtualCurrencyAmount, "钻石", GetStringByConsumeModule(ConsumeModule.Charge), true, (int)ManaCenter.Diamond); //AnySDKParam param = new AnySDKParam(requestTimeStamp.ToString()); //AnySDKAnalytics.getInstance().callFuncWithParam("onChargeSuccess", param); } /// /// 支付失败 /// /// 订单唯一标示符,目前建议使用时间戳 /// 失败原因 public void ChargeFailed(int requestTimeStamp, string failReason) { //Dictionary map = new Dictionary(); //map["Order_Id"] = requestTimeStamp.ToString(); //map["Fail_Reason"] = failReason; //AnySDKParam param = new AnySDKParam(map); // AnySDKAnalytics.getInstance().callFuncWithParam("onChargeFail", param); } /// /// 开始关卡 /// /// 关卡id /// 关卡顺序 - 可直接使用关卡id public void StartLevel(int levelId, int seqNum) { //Dictionary map = new Dictionary(); //map["Level_Id"] = levelId.ToString(); //map["Seq_Num"] = Convert.ToString(seqNum); //AnySDKParam param = new AnySDKParam(map); // AnySDKAnalytics.getInstance().callFuncWithParam("startLevel", param); } /// /// 关卡通过 /// /// 关卡id public void FinishLevel(int levelId) { DataEyeGA.Task(levelId.ToString(), DataEyeGA.TaskType.MainLine, 0, true, ""); // AnySDKParam param = new AnySDKParam(levelId); // AnySDKAnalytics.getInstance().callFuncWithParam("finishLevel", param); } /// /// 关卡失败 /// /// 关卡id /// 失败原因 public void FailLevel(int levelId, string failReason) { DataEyeGA.Task(levelId.ToString(), DataEyeGA.TaskType.MainLine, 0, true, failReason); //Dictionary map = new Dictionary(); //map["Level_Id"] = levelId.ToString(); //map["Fail_Reason"] = failReason; //AnySDKParam param = new AnySDKParam(map); //AnySDKAnalytics.getInstance().callFuncWithParam("failLevel", param); } /// /// 开始任务 /// /// 任务id /// 任务类型 public void StartTask(int taskId, string taskType) { //Dictionary map = new Dictionary(); //map["Task_Id"] = taskId.ToString(); //map["Task_Type"] = Convert.ToString((int)taskType); //AnySDKParam param = new AnySDKParam(map); //AnySDKAnalytics.getInstance().callFuncWithParam("startTask", param); } /// /// 任务完成 /// /// 任务id public void FinishTask(int taskId) { List> labelMapList = new List>(); labelMapList.Add(new KeyValuePair("id", taskId.ToString())); DataEyeGA.CustomEvent("任务完成", 0, labelMapList); //DataEyeGA.Task(taskId.ToString(), DataEyeGA.TaskType.Activity, 0, true, ""); //AnySDKAnalytics.getInstance().callFuncWithParam("finishTask", new AnySDKParam(taskId)); } /// /// 任务失败 /// /// 任务id /// 失败原因 public void FailTask(int taskId, string failReason) { //DataEyeGA.Task(taskId.ToString(), DataEyeGA.TaskType.Activity, 0, false, failReason); //Dictionary map = new Dictionary(); //map["Task_Id"] = taskId.ToString(); //map["Fail_Reason"] = failReason.ToString(); //AnySDKParam param = new AnySDKParam(map); //AnySDKAnalytics.getInstance().callFuncWithParam("failTask", param); } public void LevelUp(int startLevel, int endLevel, int interval) { DataEyeGA.LevelUp(startLevel, endLevel, interval); } public enum ItemType { 金币, 钻石, 小游戏, } public static string GetStringByConsumeModule(ConsumeModule module) { switch (module) { case ConsumeModule.Charge: return "充值"; case ConsumeModule.Checkin: return "签到"; case ConsumeModule.Shop: return "商店"; default: return "未知"; } } /// /// 奖励道具 - 包括钻石、金币、小游戏次数 来源数量和渠道 /// /// 物品标示符 /// 物品类型 /// 物品数量 /// 用途说明: 暂定显示为模块 public void RewardItem(int itemId, ItemType itemType, string itemCount, ConsumeModule module) { //TODO: 如果是钻石则记录为钻石,否则全部记录为道具 if (itemType == ItemType.钻石) DataEyeGA.VirtualCurrency(itemCount, itemId.ToString(), GetStringByConsumeModule(module), true, (int)ManaCenter.Diamond); else DataEyeGA.GetItem(itemId.ToString(), itemType.ToString(), itemCount, GetStringByConsumeModule(module)); //Dictionary map = new Dictionary(); //map["Item_Id"] = itemId.ToString(); //map["Item_Type"] = GetStringByItemType(itemType); //map["Item_Count"] = itemCount.ToString(); //map["Use_Reason"] = GetStringByConsumeModule(module); // AnySDKParam param = new AnySDKParam(map); //AnySDKAnalytics.getInstance().callFuncWithParam("onReward", param); } /// /// 使用道具 - 金币-购买成功时才调用 小游戏-游戏开始计时的时候调用 /// /// 物品标示符 /// 物品类型 /// 物品数量 /// 用途说明: 暂定显示为模块 public void UseItem(int itemId, ItemType itemType, string itemCount, ConsumeModule module) { DataEyeGA.UseItem(itemId.ToString(), itemType.ToString(), itemCount, GetStringByConsumeModule(module)); //Dictionary map = new Dictionary(); //map["Item_Id"] = itemId.ToString(); //map["Item_Type"] = GetStringByItemType(itemType); //map["Item_Count"] = itemCount.ToString(); //map["Use_Reason"] = GetStringByConsumeModule(module); //AnySDKParam param = new AnySDKParam(map); //AnySDKAnalytics.getInstance().callFuncWithParam("onUse", param); } /// /// 购买 - 钻石消费 购买成功时才调用 /// /// 物品标示符 /// 物品类型 /// 物品数量 /// 虚拟金额 public void PurchaseItem(int itemId, ItemType itemType, string itemCount, int virtualCurrency, ConsumeModule consumeModule) { DataEyeGA.BuyItem(itemId.ToString(), itemType.ToString(), itemCount, virtualCurrency, "钻石"); //Dictionary map = new Dictionary(); //map["Item_Id"] = itemId.ToString(); //map["Item_Type"] = GetStringByItemType(itemType); //map["Item_Count"] = itemCount.ToString(); //map["Virtual_Currency"] = virtualCurrency.ToString(); //map["Currency_Type"] = AnySDK.getInstance().getChannelId(); //AnySDKParam param = new AnySDKParam(map); //AnySDKAnalytics.getInstance().callFuncWithParam("onPurchase", param); } /// /// 注册与激活 每次进入游戏时第一次成功登陆时发送 /// /// 帐号id /// 帐号类型 public void ActOrReg(string accountId, DataEyeGA.AccountType accountType) { if (DataEyeGA.isInited) { DataEyeGA.SetAccount(accountId, accountType); DataEyeGA.ActOrReg(); } else Debuger.LogWarning("[DataEyeGA] is not inited!!"); } /// /// 每次检测在线时调用 /// public void Online() { if (DataEyeGA.isAccountSet) DataEyeGA.Online(); } /// /// 获得焦点时发送 /// public void StartSession() { if (DataEyeGA.isAccountSet) DataEyeGA.Online(); //AnySDKAnalytics.getInstance().startSession(); } /// /// 完成引导 每完成一步调用一次 /// /// 引导id public void TutoComplete(int id) { DataEyeGA.CustomEvent("tuto"+id, 0, new List>()); } /// /// 点击广告 /// /// 类型id:0为技能冷却,1为金币,2为钻石 public void AdClicked(int id){ DataEyeGA.CustomEvent("点击广告-"+id, 0, new List>()); DataEyeGA.CustomEvent("点击广告", 0, new List>()); } /// /// 成功播放的广告来源 /// /// 类型id:0为UnityAds,1为Vungle,2为OneWay public void AdChannel(int id){ DataEyeGA.CustomEvent("播放广告-"+id, 0, new List>()); } /// /// 3个广告源 /// public void AdFinished(){ DataEyeGA.CustomEvent("广告播放完毕", 0, new List>()); } }