StaticsManager.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. using System;
  2. using System.Collections.Generic;
  3. public class StaticsManager
  4. {
  5. public enum ConsumeType
  6. {
  7. None,
  8. Purchase,
  9. Use,
  10. Reward,
  11. }
  12. public enum ConsumeModule
  13. {
  14. None,
  15. Charge,
  16. Shop,
  17. Checkin,
  18. }
  19. private static StaticsManager instance;
  20. public static StaticsManager GetInstance()
  21. {
  22. if (instance == null)
  23. instance = new StaticsManager();
  24. return instance;
  25. }
  26. public static string currencyType = "USD"; //请使用国际标准组织 ISO 4217 中规范的 3 位字母代码标记货币类型。点击查看参考例:人民币 CNY;美元 USD;欧元 EUR
  27. public void StartSession()
  28. {
  29. if (DataEyeGA.isAccountSet)
  30. DataEyeGA.Online();
  31. //AnySDKAnalytics.getInstance().startSession();
  32. }
  33. public void StopSession()
  34. {
  35. #if UNITY_EDITOR
  36. if (DataEyeGA.isAccountSet)
  37. DataEyeGA.Online();
  38. #endif
  39. //AnySDKAnalytics.getInstance().stopSession();
  40. }
  41. public void Online()
  42. {
  43. if (DataEyeGA.isAccountSet)
  44. DataEyeGA.Online();
  45. }
  46. public void SetSessionInterval(long interval)
  47. {
  48. //AnySDKAnalytics.getInstance().setSessionContinueMillis(interval);
  49. }
  50. public void SetCaptureUncaughtException(bool value)
  51. {
  52. //AnySDKAnalytics.getInstance().setCaptureUncaughtException(value);
  53. }
  54. //public void SetAccount(int userId, string nickname, AccountType accountType, int teamRank, AccountOperate operate)
  55. //{
  56. // Dictionary<string, string> paramMap = new Dictionary<string, string>();
  57. // paramMap["Account_Id"] = userId.ToString();
  58. // paramMap["Account_Name"] = nickname;
  59. // paramMap["Account_Type"] = Convert.ToString((int)accountType);
  60. // paramMap["Account_Level"] = teamRank.ToString();
  61. // paramMap["Account_Operate"] = Convert.ToString((int)operate);
  62. // paramMap["Server_Id"] = Config.GetHostIp();
  63. // //AnySDKParam param = new AnySDKParam(paramMap);
  64. // //AnySDKAnalytics.getInstance().callFuncWithParam("setAccount", param);
  65. //}
  66. /// <summary>
  67. /// 注册与激活
  68. /// </summary>
  69. /// <param name="accountId">帐号id</param>
  70. /// <param name="accountType">帐号类型</param>
  71. public void ActOrReg(string accountId, DataEyeGA.AccountType accountType)
  72. {
  73. if (DataEyeGA.isInited)
  74. {
  75. DataEyeGA.SetAccount(accountId, accountType);
  76. DataEyeGA.ActOrReg();
  77. }
  78. else
  79. Debuger.LogWarning("[DataEyeGA] is not inited!!");
  80. }
  81. /// <summary>
  82. /// 设置帐号
  83. /// </summary>
  84. /// <param name="accountId">帐号id</param>
  85. /// <param name="accountType">帐号类型</param>
  86. public void SetAccount(string accountId, DataEyeGA.AccountType accountType)
  87. {
  88. if (DataEyeGA.isInited)
  89. {
  90. DataEyeGA.SetAccount(accountId, accountType);
  91. DataEyeGA.Online();
  92. }
  93. }
  94. /// <summary>
  95. /// 支付请求
  96. /// </summary>
  97. /// <param name="requestTimeStamp">订单唯一标示符,目前建议使用时间戳</param>
  98. /// <param name="productName">商品名</param>
  99. /// <param name="currencyAmount">现金数额(元)</param>
  100. /// <param name="currencyType">请使用国际标准组织 ISO 4217 中规范的 3 位字母代码标记货币类型。点击查看参考例:人民币 CNY;美元 USD;欧元 EUR</param>
  101. /// <param name="paymentType">支付的途径,最多 16 个字符。例如:“支付宝”“苹果官方”“XX 支付 SDK</param>
  102. /// <param name="virtualCurrencyAmount">虚拟币数值</param>
  103. public void ChargeRequest(int requestTimeStamp, string productName, int currencyAmount, string currencyType, string paymentType, int virtualCurrencyAmount)
  104. {
  105. //Dictionary<string, string> map = new Dictionary<string, string>();
  106. //map["Order_Id"] = requestTimeStamp.ToString();
  107. //map["Product_Name"] = productName;
  108. //map["Currency_Amount"] = currencyAmount.ToString();
  109. //map["Currency_Type"] = currencyType;
  110. //map["Payment_Type"] = paymentType;
  111. //map["Virtual_Currency_Amount"] = virtualCurrencyAmount.ToString();
  112. //AnySDKParam param = new AnySDKParam(map);
  113. //AnySDKAnalytics.getInstance().callFuncWithParam("onChargeRequest", param);
  114. }
  115. /// <summary>
  116. /// 支付成功
  117. /// </summary>
  118. /// <param name="requestTimeStamp">订单唯一标示符,目前建议使用时间戳</param>
  119. public void ChargeSuccess(int requestTimeStamp)
  120. {
  121. //AnySDKParam param = new AnySDKParam(requestTimeStamp.ToString());
  122. //AnySDKAnalytics.getInstance().callFuncWithParam("onChargeSuccess", param);
  123. }
  124. /// <summary>
  125. /// 支付请求
  126. /// </summary>
  127. /// <param name="requestTimeStamp">订单唯一标示符,目前建议使用时间戳</param>
  128. /// <param name="productName">商品名</param>
  129. /// <param name="currencyAmount">现金数额(元)</param>
  130. /// <param name="currencyType">请使用国际标准组织 ISO 4217 中规范的 3 位字母代码标记货币类型。点击查看参考例:人民币 CNY;美元 USD;欧元 EUR</param>
  131. /// <param name="paymentType">支付的途径,最多 16 个字符。例如:“支付宝”“苹果官方”“XX 支付 SDK</param>
  132. /// <param name="virtualCurrencyAmount">虚拟币数值</param>
  133. public void ChargeSuccess(int requestTimeStamp, string productName, int currencyAmount, string currencyType, string paymentType, int virtualCurrencyAmount)
  134. {
  135. DataEyeGA.Pay(currencyAmount, currencyType, productName, requestTimeStamp.ToString());
  136. //TODO: 获取玩家自身的钻石数量
  137. // DataEyeGA.VirtualCurrency(virtualCurrencyAmount, "钻石", GetStringByConsumeModule(ConsumeModule.Charge), true, Session.GetInstance().myPlayer.diamond);
  138. //AnySDKParam param = new AnySDKParam(requestTimeStamp.ToString());
  139. //AnySDKAnalytics.getInstance().callFuncWithParam("onChargeSuccess", param);
  140. }
  141. /// <summary>
  142. /// 支付失败
  143. /// </summary>
  144. /// <param name="requestTimeStamp">订单唯一标示符,目前建议使用时间戳</param>
  145. /// <param name="failReason">失败原因</param>
  146. public void ChargeFailed(int requestTimeStamp, string failReason)
  147. {
  148. //Dictionary<string, string> map = new Dictionary<string, string>();
  149. //map["Order_Id"] = requestTimeStamp.ToString();
  150. //map["Fail_Reason"] = failReason;
  151. //AnySDKParam param = new AnySDKParam(map);
  152. // AnySDKAnalytics.getInstance().callFuncWithParam("onChargeFail", param);
  153. }
  154. /// <summary>
  155. /// 购买 - 钻石消费
  156. /// </summary>
  157. /// <param name="itemId">物品标示符</param>
  158. /// <param name="string">物品类型</param>
  159. /// <param name="itemCount">物品数量</param>
  160. /// <param name="virtualCurrency">虚拟金额</param>
  161. public void PurchaseItem(int itemId, string itemType, int itemCount, int virtualCurrency, ConsumeModule consumeModule)
  162. {
  163. DataEyeGA.BuyItem(itemId.ToString(), itemType.ToString(), itemCount.ToString(), virtualCurrency, "钻石");
  164. //Dictionary<string, string> map = new Dictionary<string, string>();
  165. //map["Item_Id"] = itemId.ToString();
  166. //map["Item_Type"] = GetStringByItemType(itemType);
  167. //map["Item_Count"] = itemCount.ToString();
  168. //map["Virtual_Currency"] = virtualCurrency.ToString();
  169. //map["Currency_Type"] = AnySDK.getInstance().getChannelId();
  170. //AnySDKParam param = new AnySDKParam(map);
  171. //AnySDKAnalytics.getInstance().callFuncWithParam("onPurchase", param);
  172. }
  173. /// <summary>
  174. /// 使用道具 - 包括金币、竞技券、体力等,不包括钻石
  175. /// </summary>
  176. /// <param name="itemId">物品标示符</param>
  177. /// <param name="string">物品类型</param>
  178. /// <param name="itemCount">物品数量</param>
  179. /// <param name="useReason">用途说明: 暂定显示为模块</param>
  180. public void UseItem(int itemId, string itemType, int itemCount, ConsumeModule module)
  181. {
  182. DataEyeGA.UseItem(itemId.ToString(), itemType.ToString(), itemCount.ToString(), GetStringByConsumeModule(module));
  183. //Dictionary<string, string> map = new Dictionary<string, string>();
  184. //map["Item_Id"] = itemId.ToString();
  185. //map["Item_Type"] = GetStringByItemType(itemType);
  186. //map["Item_Count"] = itemCount.ToString();
  187. //map["Use_Reason"] = GetStringByConsumeModule(module);
  188. //AnySDKParam param = new AnySDKParam(map);
  189. //AnySDKAnalytics.getInstance().callFuncWithParam("onUse", param);
  190. }
  191. /// <summary>
  192. /// 奖励道具 - 包括钻石、金币、竞技券、体力等
  193. /// </summary>
  194. /// <param name="itemId">物品标示符</param>
  195. /// <param name="string">物品类型</param>
  196. /// <param name="itemCount">物品数量</param>
  197. /// <param name="useReason">用途说明: 暂定显示为模块</param>
  198. public void RewardItem(int itemId, string itemType, int itemCount, ConsumeModule module)
  199. {
  200. //TODO: 如果是钻石则记录为钻石,否则全部记录为道具
  201. // if (itemId == Item.SpecialType.Diamond.GetHashCode())
  202. // DataEyeGA.VirtualCurrency(itemCount, "钻石", GetStringByConsumeModule(module), true, Session.GetInstance().myPlayer.diamond);
  203. // else
  204. // DataEyeGA.GetItem(itemId.ToString(), itemType.ToString(), itemCount, GetStringByConsumeModule(module));
  205. //Dictionary<string, string> map = new Dictionary<string, string>();
  206. //map["Item_Id"] = itemId.ToString();
  207. //map["Item_Type"] = GetStringByItemType(itemType);
  208. //map["Item_Count"] = itemCount.ToString();
  209. //map["Use_Reason"] = GetStringByConsumeModule(module);
  210. // AnySDKParam param = new AnySDKParam(map);
  211. //AnySDKAnalytics.getInstance().callFuncWithParam("onReward", param);
  212. }
  213. public static string GetStringByConsumeModule(ConsumeModule module)
  214. {
  215. switch (module)
  216. {
  217. case ConsumeModule.Charge:
  218. return "充值";
  219. case ConsumeModule.Checkin:
  220. return "签到";
  221. case ConsumeModule.Shop:
  222. return "商店";
  223. default:return "未知";
  224. }
  225. }
  226. /// <summary>
  227. /// 开始关卡
  228. /// </summary>
  229. /// <param name="levelId">关卡id</param>
  230. /// <param name="seqNum">关卡顺序 - 可直接使用关卡id</param>
  231. public void StartLevel(int levelId, int seqNum)
  232. {
  233. //Dictionary<string, string> map = new Dictionary<string, string>();
  234. //map["Level_Id"] = levelId.ToString();
  235. //map["Seq_Num"] = Convert.ToString(seqNum);
  236. //AnySDKParam param = new AnySDKParam(map);
  237. // AnySDKAnalytics.getInstance().callFuncWithParam("startLevel", param);
  238. }
  239. /// <summary>
  240. /// 关卡通过
  241. /// </summary>
  242. /// <param name="levelId">关卡id</param>
  243. public void FinishLevel(int levelId)
  244. {
  245. DataEyeGA.Task(levelId.ToString(), DataEyeGA.TaskType.MainLine, 0, true, "");
  246. // AnySDKParam param = new AnySDKParam(levelId);
  247. // AnySDKAnalytics.getInstance().callFuncWithParam("finishLevel", param);
  248. }
  249. /// <summary>
  250. /// 关卡失败
  251. /// </summary>
  252. /// <param name="levelId">关卡id</param>
  253. /// <param name="failReason">失败原因</param>
  254. public void FailLevel(int levelId, string failReason)
  255. {
  256. DataEyeGA.Task(levelId.ToString(), DataEyeGA.TaskType.MainLine, 0, true, failReason);
  257. //Dictionary<string, string> map = new Dictionary<string, string>();
  258. //map["Level_Id"] = levelId.ToString();
  259. //map["Fail_Reason"] = failReason;
  260. //AnySDKParam param = new AnySDKParam(map);
  261. //AnySDKAnalytics.getInstance().callFuncWithParam("failLevel", param);
  262. }
  263. /// <summary>
  264. /// 开始任务
  265. /// </summary>
  266. /// <param name="taskId">任务id</param>
  267. /// <param name="string">任务类型</param>
  268. public void StartTask(int taskId, string taskType)
  269. {
  270. //Dictionary<string, string> map = new Dictionary<string, string>();
  271. //map["Task_Id"] = taskId.ToString();
  272. //map["Task_Type"] = Convert.ToString((int)taskType);
  273. //AnySDKParam param = new AnySDKParam(map);
  274. //AnySDKAnalytics.getInstance().callFuncWithParam("startTask", param);
  275. }
  276. /// <summary>
  277. /// 任务完成
  278. /// </summary>
  279. /// <param name="taskId">任务id</param>
  280. public void FinishTask(int taskId)
  281. {
  282. List<KeyValuePair<string, string>> labelMapList = new List<KeyValuePair<string, string>>();
  283. labelMapList.Add(new KeyValuePair<string, string>("id", taskId.ToString()));
  284. DataEyeGA.CustomEvent("任务完成", 0, labelMapList);
  285. //DataEyeGA.Task(taskId.ToString(), DataEyeGA.TaskType.Activity, 0, true, "");
  286. //AnySDKAnalytics.getInstance().callFuncWithParam("finishTask", new AnySDKParam(taskId));
  287. }
  288. /// <summary>
  289. /// 任务失败
  290. /// </summary>
  291. /// <param name="taskId">任务id</param>
  292. /// <param name="failReason">失败原因</param>
  293. public void FailTask(int taskId, string failReason)
  294. {
  295. //DataEyeGA.Task(taskId.ToString(), DataEyeGA.TaskType.Activity, 0, false, failReason);
  296. //Dictionary<string, string> map = new Dictionary<string, string>();
  297. //map["Task_Id"] = taskId.ToString();
  298. //map["Fail_Reason"] = failReason.ToString();
  299. //AnySDKParam param = new AnySDKParam(map);
  300. //AnySDKAnalytics.getInstance().callFuncWithParam("failTask", param);
  301. }
  302. public void LevelUp(int startLevel, int endLevel, int interval)
  303. {
  304. DataEyeGA.LevelUp(startLevel, endLevel, interval);
  305. }
  306. /// <summary>
  307. /// 完成引导
  308. /// </summary>
  309. /// <param name="id">引导id</param>
  310. public void TutoComplete(int id)
  311. {
  312. DataEyeGA.CustomEvent("tuto"+id, 0, new List<KeyValuePair<string, string>>());
  313. }
  314. /// <summary>
  315. /// 点击广告
  316. /// </summary>
  317. /// <param name="id">类型id:0为技能冷却,1为金币,2为钻石</param>
  318. public void AdClicked(int id){
  319. DataEyeGA.CustomEvent("点击广告-"+id, 0, new List<KeyValuePair<string, string>>());
  320. DataEyeGA.CustomEvent("点击广告", 0, new List<KeyValuePair<string, string>>());
  321. }
  322. public void AdFinished(){
  323. DataEyeGA.CustomEvent("广告播放完毕", 0, new List<KeyValuePair<string, string>>());
  324. }
  325. }