StaticsManager.cs 15 KB

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