StaticsManager.cs 16 KB

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