123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396 |
- 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<string, string> paramMap = new Dictionary<string, string>();
- // 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);
- //}
- /// <summary>
- /// 设置帐号
- /// </summary>
- /// <param name="accountId">帐号id</param>
- /// <param name="accountType">帐号类型</param>
- public void SetAccount(string accountId, DataEyeGA.AccountType accountType)
- {
- if (DataEyeGA.isInited)
- {
- DataEyeGA.SetAccount(accountId, accountType);
- DataEyeGA.Online();
- }
- }
- /// <summary>
- /// 支付请求
- /// </summary>
- /// <param name="requestTimeStamp">订单唯一标示符,目前建议使用时间戳</param>
- /// <param name="productName">商品名</param>
- /// <param name="currencyAmount">现金数额(元)</param>
- /// <param name="currencyType">请使用国际标准组织 ISO 4217 中规范的 3 位字母代码标记货币类型。点击查看参考例:人民币 CNY;美元 USD;欧元 EUR</param>
- /// <param name="paymentType">支付的途径,最多 16 个字符。例如:“支付宝”“苹果官方”“XX 支付 SDK</param>
- /// <param name="virtualCurrencyAmount">虚拟币数值</param>
- public void ChargeRequest(int requestTimeStamp, string productName, int currencyAmount, string currencyType, string paymentType, int virtualCurrencyAmount)
- {
- //Dictionary<string, string> map = new Dictionary<string, string>();
- //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);
- }
- /// <summary>
- /// 支付成功
- /// </summary>
- /// <param name="requestTimeStamp">订单唯一标示符,目前建议使用时间戳</param>
- public void ChargeSuccess(int requestTimeStamp)
- {
- //AnySDKParam param = new AnySDKParam(requestTimeStamp.ToString());
- //AnySDKAnalytics.getInstance().callFuncWithParam("onChargeSuccess", param);
- }
- /// <summary>
- /// 支付请求
- /// </summary>
- /// <param name="requestTimeStamp">订单唯一标示符,目前建议使用时间戳</param>
- /// <param name="productName">商品名</param>
- /// <param name="currencyAmount">现金数额(元)</param>
- /// <param name="currencyType">请使用国际标准组织 ISO 4217 中规范的 3 位字母代码标记货币类型。点击查看参考例:人民币 CNY;美元 USD;欧元 EUR</param>
- /// <param name="paymentType">支付的途径,最多 16 个字符。例如:“支付宝”“苹果官方”“XX 支付 SDK</param>
- /// <param name="virtualCurrencyAmount">虚拟币数值</param>
- 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);
- }
- /// <summary>
- /// 支付失败
- /// </summary>
- /// <param name="requestTimeStamp">订单唯一标示符,目前建议使用时间戳</param>
- /// <param name="failReason">失败原因</param>
- public void ChargeFailed(int requestTimeStamp, string failReason)
- {
- //Dictionary<string, string> map = new Dictionary<string, string>();
- //map["Order_Id"] = requestTimeStamp.ToString();
- //map["Fail_Reason"] = failReason;
- //AnySDKParam param = new AnySDKParam(map);
- // AnySDKAnalytics.getInstance().callFuncWithParam("onChargeFail", param);
- }
- /// <summary>
- /// 开始关卡
- /// </summary>
- /// <param name="levelId">关卡id</param>
- /// <param name="seqNum">关卡顺序 - 可直接使用关卡id</param>
- public void StartLevel(int levelId, int seqNum)
- {
- //Dictionary<string, string> map = new Dictionary<string, string>();
- //map["Level_Id"] = levelId.ToString();
- //map["Seq_Num"] = Convert.ToString(seqNum);
- //AnySDKParam param = new AnySDKParam(map);
- // AnySDKAnalytics.getInstance().callFuncWithParam("startLevel", param);
- }
- /// <summary>
- /// 关卡通过
- /// </summary>
- /// <param name="levelId">关卡id</param>
- public void FinishLevel(int levelId)
- {
- DataEyeGA.Task(levelId.ToString(), DataEyeGA.TaskType.MainLine, 0, true, "");
- // AnySDKParam param = new AnySDKParam(levelId);
- // AnySDKAnalytics.getInstance().callFuncWithParam("finishLevel", param);
- }
- /// <summary>
- /// 关卡失败
- /// </summary>
- /// <param name="levelId">关卡id</param>
- /// <param name="failReason">失败原因</param>
- public void FailLevel(int levelId, string failReason)
- {
- DataEyeGA.Task(levelId.ToString(), DataEyeGA.TaskType.MainLine, 0, true, failReason);
- //Dictionary<string, string> map = new Dictionary<string, string>();
- //map["Level_Id"] = levelId.ToString();
- //map["Fail_Reason"] = failReason;
- //AnySDKParam param = new AnySDKParam(map);
- //AnySDKAnalytics.getInstance().callFuncWithParam("failLevel", param);
- }
- /// <summary>
- /// 开始任务
- /// </summary>
- /// <param name="taskId">任务id</param>
- /// <param name="string">任务类型</param>
- public void StartTask(int taskId, string taskType)
- {
- //Dictionary<string, string> map = new Dictionary<string, string>();
- //map["Task_Id"] = taskId.ToString();
- //map["Task_Type"] = Convert.ToString((int)taskType);
- //AnySDKParam param = new AnySDKParam(map);
- //AnySDKAnalytics.getInstance().callFuncWithParam("startTask", param);
- }
- /// <summary>
- /// 任务完成
- /// </summary>
- /// <param name="taskId">任务id</param>
- public void FinishTask(int taskId)
- {
- List<KeyValuePair<string, string>> labelMapList = new List<KeyValuePair<string, string>>();
- labelMapList.Add(new KeyValuePair<string, string>("id", taskId.ToString()));
- DataEyeGA.CustomEvent("任务完成", 0, labelMapList);
- //DataEyeGA.Task(taskId.ToString(), DataEyeGA.TaskType.Activity, 0, true, "");
- //AnySDKAnalytics.getInstance().callFuncWithParam("finishTask", new AnySDKParam(taskId));
- }
- /// <summary>
- /// 任务失败
- /// </summary>
- /// <param name="taskId">任务id</param>
- /// <param name="failReason">失败原因</param>
- public void FailTask(int taskId, string failReason)
- {
- //DataEyeGA.Task(taskId.ToString(), DataEyeGA.TaskType.Activity, 0, false, failReason);
- //Dictionary<string, string> map = new Dictionary<string, string>();
- //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 ItemID
- {
- 花朵,
- 服装,
- 访问,
- 购买礼包,
- 使用技能,
- 解锁技能,
- 升级技能,
- 提前解锁技能
- }
- 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 "未知";
- }
- }
- /// <summary>
- /// 奖励道具 - 包括钻石、金币、小游戏次数 来源数量和渠道
- /// </summary>
- /// <param name="itemId">物品标示符</param>
- /// <param name="string">物品类型</param>
- /// <param name="itemCount">物品数量</param>
- /// <param name="useReason">用途说明: 暂定显示为模块</param>
- 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<string, string> map = new Dictionary<string, string>();
- //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);
- }
- /// <summary>
- /// 使用道具 - 金币-购买成功时才调用 小游戏-游戏开始计时的时候调用
- /// </summary>
- /// <param name="itemId">物品标示符</param>
- /// <param name="itemType">物品类型</param>
- /// <param name="itemCount">物品数量</param>
- /// <param name="useReason">用途说明: 暂定显示为模块</param>
- public void UseItem(ItemID itemId, ItemType itemType, string itemCount, ConsumeModule module)
- {
- DataEyeGA.UseItem(itemId.ToString(), itemType.ToString(), itemCount, GetStringByConsumeModule(module));
- //Dictionary<string, string> map = new Dictionary<string, string>();
- //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);
- }
- /// <summary>
- /// 购买 - 钻石消费 购买成功时才调用
- /// </summary>
- /// <param name="itemId">物品标示符</param>
- /// <param name="string">物品类型</param>
- /// <param name="itemCount">物品数量</param>
- /// <param name="virtualCurrency">虚拟金额</param>
- public void PurchaseItem(int itemId, ItemType itemType, string itemCount, string virtualCurrency, ConsumeModule consumeModule)
- {
- DataEyeGA.BuyItem(itemId.ToString(), itemType.ToString(), itemCount, virtualCurrency, "钻石");
- //Dictionary<string, string> map = new Dictionary<string, string>();
- //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);
- }
- /// <summary>
- /// 注册与激活 每次进入游戏时第一次成功登陆时发送
- /// </summary>
- /// <param name="accountId">帐号id</param>
- /// <param name="accountType">帐号类型</param>
- public void ActOrReg(string accountId, DataEyeGA.AccountType accountType)
- {
- if (DataEyeGA.isInited)
- {
- DataEyeGA.SetAccount(accountId, accountType);
- DataEyeGA.ActOrReg();
- }
- else
- Debuger.LogWarning("[DataEyeGA] is not inited!!");
- }
- /// <summary>
- /// 每次检测在线时调用
- /// </summary>
- public void Online()
- {
- if (DataEyeGA.isAccountSet)
- DataEyeGA.Online();
- }
- /// <summary>
- /// 获得焦点时发送
- /// </summary>
- public void StartSession()
- {
- if (DataEyeGA.isAccountSet)
- DataEyeGA.Online();
- //AnySDKAnalytics.getInstance().startSession();
- }
- /// <summary>
- /// 完成引导 每完成一步调用一次
- /// </summary>
- /// <param name="id">引导id</param>
- public void TutoComplete(int id)
- {
- DataEyeGA.CustomEvent("tuto"+id, 0, new List<KeyValuePair<string, string>>());
- }
- /// <summary>
- /// 点击广告
- /// </summary>
- /// <param name="id">类型id:0为技能冷却,1为金币,2为钻石</param>
- public void AdClicked(int id){
- DataEyeGA.CustomEvent("点击广告-"+id, 0, new List<KeyValuePair<string, string>>());
- DataEyeGA.CustomEvent("点击广告", 0, new List<KeyValuePair<string, string>>());
- }
- /// <summary>
- /// 成功播放的广告来源
- /// </summary>
- /// <param name="id">类型id:0为UnityAds,1为Vungle,2为OneWay</param>
- public void AdChannel(int id){
- DataEyeGA.CustomEvent("播放广告-"+id, 0, new List<KeyValuePair<string, string>>());
- }
- /// <summary>
- /// 3个广告源
- /// </summary>
- public void AdFinished(){
- DataEyeGA.CustomEvent("广告播放完毕", 0, new List<KeyValuePair<string, string>>());
- }
- }
|