SDKReport.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public partial class SDKMgr
  5. {
  6. //timestamp 实际上是int64, 类似于c里面time的返回值,表示1970年到现在经过了多少秒 1371089650
  7. //目前游戏内传进来的时间为毫秒,需要根据各自的需要进行转换
  8. //timestamp_text 更具有可读性的时间,日期之后接时间,精确到秒,时间之后接时区,使用空格分割。格式是 YYYY-MM-DD HH:MM:SS Timezone 2013-04-11 00:00:09 +0800
  9. //2019-07-09 00:00:00 +0900
  10. /// <summary>
  11. /// 游戏激活时记录
  12. /// </summary>
  13. /// <param name="active_Time">激活时间 timestamp</param>
  14. public void ReportActivation(long active_Time)
  15. {
  16. if (SDKReport == null) return;
  17. SDKReport.ReportActivation(active_Time);
  18. }
  19. /// <summary>
  20. /// 设备开始更新、更新完成、更新失败时
  21. /// </summary>
  22. /// <param name="reach_update_time">到达更新界面时间,若无,不记录</param>
  23. /// <param name="update_status">0表示更新开始,1表示更新成功,-1表示更新失败</param>
  24. /// <param name="update_time">记录更新状态对应的时间,比如更新开始的时间、更新成功的时间、更新失败的时间</param>
  25. /// <param name="use_time">更新耗时单位秒 </param>
  26. public void ReportUpdate(long reach_update_time , int update_status , long update_time , int use_time)
  27. {
  28. if (SDKReport == null) return;
  29. SDKReport.ReportUpdate(reach_update_time, update_status, update_time, use_time);
  30. }
  31. /// <summary>
  32. /// 设备下载patch过程中
  33. /// </summary>
  34. /// <param name="update_time">记录更新状态对应的时间,比如更新开始的时间、更新成功的时间、更新失败的时间</param>
  35. /// <param name="patch_ver">当前要下载的patch的版本号</param>
  36. /// <param name="download_url">下载资源的url,即patch的下载地址</param>
  37. /// <param name="downloaded_size">已经下载好的patch文件大小,MB为单位</param>
  38. /// <param name="file_size">需下载的所有patch文件的总大小,MB为单位</param>
  39. /// <param name="file_num">需下载的所有patch文件的总数</param>
  40. public void ReportDownload(long update_time , string patch_ver , string download_url , int downloaded_size ,
  41. int file_size , int file_num)
  42. {
  43. if (SDKReport == null) return;
  44. SDKReport.ReportDownload(update_time, patch_ver, download_url, downloaded_size,
  45. file_size, file_num);
  46. }
  47. /// <summary>
  48. /// 到达登陆界面时记录
  49. /// </summary>
  50. /// <param name="reach_login_time">到达登陆界面时间</param>
  51. public void ReportLoginUI(long reach_login_time)
  52. {
  53. if (SDKReport == null) return;
  54. SDKReport.ReportLoginUI(reach_login_time);
  55. }
  56. /// <summary>
  57. /// 账号认证请求返回成功时记录
  58. /// </summary>
  59. /// <param name="reach_login_time">到达账号认证界面时间</param>
  60. public void ReportIdentification(long reach_login_time)
  61. {
  62. if (SDKReport == null) return;
  63. SDKReport.ReportIdentification(reach_login_time);
  64. }
  65. /// <summary>
  66. /// 用户成功加载进入游戏界面时记录
  67. /// </summary>
  68. /// <param name="reach_game_time">到达登陆界面时间</param>
  69. /// <param name="load_time_long">对于进入游戏界面前需要加载的游戏(非更新),指上一界面至游戏界面加载的时长,单位秒</param>
  70. public void ReportLoad(long reach_game_time , int load_time_long)
  71. {
  72. if (SDKReport == null) return;
  73. SDKReport.ReportLoad(reach_game_time, load_time_long);
  74. }
  75. /// <summary>
  76. /// 在有新手引导时记录log
  77. /// </summary>
  78. /// <param name="server">服务器编号id,要求是正整数的编号,如10001</param>
  79. /// <param name="role_id">角色唯一标识,在所有服唯一。</param>
  80. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  81. /// <param name="tutorial_id">新手引导ID</param>
  82. /// <param name="tutorial_name">新手引导名称</param>
  83. /// <param name="total_screens">引导总点击次数</param>
  84. /// <param name="finish_screens">玩家实际点击次数</param>
  85. /// <param name="begin_time">开始新手引导的时间</param>
  86. /// <param name="begin_role_level">开始教程时玩家角色等级</param>
  87. /// <param name="end_role_level">结束教程时玩家角色等级</param>
  88. /// <param name="vip_level">角色VIP等级</param>
  89. /// <param name="use_time">玩法耗时(单位秒,瞬时玩法的耗时记为0)</param>
  90. /// <param name="step_type">引导情况(未完成:-1,完成:1,开始 :0)</param>
  91. public void ReportTutorial(string tutorial_id ,
  92. string tutorial_name , int total_screens , int finish_screens ,
  93. long begin_time , int end_role_level ,
  94. int use_time , int step_type)
  95. {
  96. if (SDKReport == null) return;
  97. SDKReport.ReportTutorial( tutorial_id,
  98. tutorial_name, total_screens, finish_screens,
  99. begin_time, end_role_level,
  100. use_time, step_type);
  101. }
  102. /// <summary>
  103. /// 记录用户实名认证的信息
  104. /// </summary>
  105. public void ReportUserCertification( )
  106. {
  107. if (SDKReport == null) return;
  108. SDKReport.ReportUserCertification();
  109. }
  110. /// <summary>
  111. /// 记录角色创建时刻信息。
  112. /// </summary>
  113. public void ReportCreateRole()
  114. {
  115. if (SDKReport == null) return;
  116. SDKReport.ReportCreateRole();
  117. }
  118. /// <summary>
  119. /// 记录角色登录时刻信息
  120. /// </summary>
  121. /// <param name="offline_money">本次登陆奖励的游戏币数目,包括离线挂机奖励。注意:如果游戏内没有这个数据,可以不添加,如游戏不是mmo的</param>
  122. /// <param name="offline_exp">本次登陆奖励的经验,包括离线挂机奖励。注意:如果游戏内没有这个数据,可以不添加,如游戏不是mmo的</param>
  123. /// <param name="offline_ItemDetail">本次登陆奖励的物品或者资源,包括离线挂机奖励。若无奖励,则不需要本字段</param>
  124. public void ReportLoginRole(int offline_money, int offline_exp, Offline_ItemDetail offline_ItemDetail)
  125. {
  126. if (SDKReport == null) return;
  127. SDKReport.ReportLoginRole(offline_money, offline_exp, offline_ItemDetail);
  128. }
  129. /// <summary>
  130. /// 在调用计费的role_enter后,在返回码 code<>200的时候记录日志,其含义为登录失败(其中返回码code=200表示登录成功)
  131. /// </summary>
  132. public void ReportRoleEnterFail()
  133. {
  134. if (SDKReport == null) return;
  135. SDKReport.ReportRoleEnterFail();
  136. }
  137. /// <summary>
  138. /// 记录角色登出时刻信息。
  139. /// </summary>
  140. /// <param name="server">服务器编号id,要求是正整数的编号,如10001</param>
  141. /// <param name="role_id">角色唯一标识,在所有服唯一。</param>
  142. /// <param name="create_time">这个角色的创建时间</param>
  143. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  144. /// <param name="role_level">角色等级</param>
  145. /// <param name="vip_level">角色vip等级</param>
  146. /// <param name="exp">角色当前经验(如游戏没有角色概念,可以不写)</param>
  147. /// <param name="logout_time">角色登出游戏的时间</param>
  148. /// <param name="online_time">本次玩家在线时长(单位:秒)</param>
  149. /// <param name="scene">登出时所在场景</param>
  150. /// <param name="axis">登出时所在场景坐标,应该是 (x,y,z)的形式</param>
  151. /// <param name="last_operation">登出前角色最后一次操作或者完成的玩法,游戏自己定义</param>
  152. /// <param name="money_sum">每次登出的时候将本次在线所有系统产生游戏币进行累加</param>
  153. /// <param name="exp_sum">每次登出的时候将本次在线所有获得的经验值进行累加写出。</param>
  154. /// <param name="item_SumDetail">每次登出的时候将本次在线所有你希望监控的重要资源或者物品进行累计,通过物品资源表形式写出</param>
  155. public void ReportLogoutRole(long logout_time , string scene ,
  156. string axis , string last_operation , int money_sum , int exp_sum , Item_SumDetail item_SumDetail)
  157. {
  158. if (SDKReport == null) return;
  159. // SDKReport.ReportLogoutRole(logout_time, scene, axis, last_operation, money_sum, exp_sum, item_SumDetail);
  160. }
  161. /// <summary>
  162. /// 因为触发防沉迷的规则,而强制玩家下线(踢下线)。
  163. /// </summary>
  164. /// <param name="server">服务器编号id,要求是正整数的编号如10001</param>
  165. /// <param name="role_id">角色唯一标识,在所有服唯一。</param>
  166. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  167. /// <param name="role_level">角色等级</param>
  168. /// <param name="kickoff_time">角色被踢下线的时间</param>
  169. public void ReportAntiAddictionKickOff(string server , string role_id , string role_name , string role_level , string kickoff_time)
  170. {
  171. if (SDKReport == null) return;
  172. int serverint = 0;
  173. int rolelevelint = 0;
  174. long kickofftime = 0;
  175. if (!string.IsNullOrEmpty(server))
  176. {
  177. serverint = int.Parse(server);
  178. }
  179. if (!string.IsNullOrEmpty(role_level))
  180. {
  181. rolelevelint = int.Parse(role_level);
  182. }
  183. if (!string.IsNullOrEmpty(kickoff_time))
  184. {
  185. kickofftime = long.Parse(kickoff_time);
  186. }
  187. SDKReport.ReportAntiAddictionKickOff(serverint, role_id, role_name, rolelevelint, kickofftime);
  188. }
  189. /// <summary>
  190. /// 充值,记录玩家用现金购买元宝行为
  191. /// </summary>
  192. /// <param name="server">服务器编号id,要求是正整数的编号,如10001</param>
  193. /// <param name="role_id">角色唯一标识,在所有服唯一。</param>
  194. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  195. /// <param name="role_level">角色等级 </param>
  196. /// <param name="vip_level">角色vip等级注意:如果不写,则默认游戏内没有vip等级</param>
  197. /// <param name="yuanbao">本次充值获得的元宝数量</param>
  198. /// <param name="free_yuanbao">本次充值获得的免费元宝,值为正数</param>
  199. /// <param name="cash">本次充值花费现金</param>
  200. /// <param name="currency">货币类型,CNY代表中国货币,EUR代表欧元,统一采用标准货币代码</param>
  201. /// <param name="left_yuanbao">角色充值后剩余元宝量</param>
  202. /// <param name="left_free_yuanbao">角色充值后剩余的免费元宝量,值为正数</param>
  203. /// <param name="pay_time">角色充值的时间</param>
  204. /// <param name="sn">订单编号,一般是唯一的</param>
  205. public void ReportPrepaid(int server , string role_id , string role_name , int role_level , int vip_level , int yuanbao ,
  206. int free_yuanbao , float cash , string currency , int left_yuanbao , int left_free_yuanbao ,
  207. long pay_time , string sn)
  208. {
  209. if (SDKReport == null) return;
  210. SDKReport.ReportPrepaid(server, role_id, role_name, role_level, vip_level, yuanbao,
  211. free_yuanbao, cash, currency, left_yuanbao, left_free_yuanbao,
  212. pay_time, sn);
  213. }
  214. /// <summary>
  215. /// 记录玩家用元宝购买游戏内物品/游戏币行为
  216. /// </summary>
  217. /// <param name="server">服务器编号id,要求是正整数的编号,如10001</param>
  218. /// <param name="role_id">角色唯一标识,在所有服唯一</param>
  219. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  220. /// <param name="role_level">角色等级</param>
  221. /// <param name="vip_level">角色vip等级</param>
  222. /// <param name="item_id">物品名字标识符,(标志同一种物品),非中文,一般用数字编号。</param>
  223. /// <param name="item_name">物品名称,不做标识符,方便读</param>
  224. /// <param name="item_type">物品类型,如weapon(武器),remedy(药物)</param>
  225. /// <param name="buy_time">购买物品时间</param>
  226. /// <param name="expire_time">物品失效时间 </param>
  227. /// <param name="count">购买这一物品数量</param>
  228. /// <param name="price">物品单价(以元宝计价)</param>
  229. /// <param name="yuanbao">本次购买花费的元宝数量</param>
  230. /// <param name="left_yuanbao">购买后角色剩余元宝量</param>
  231. /// <param name="free_yuanbao">购买后角色剩余免费元宝量</param>
  232. /// <param name="left_free_yuanbao">本次购买花费的免费元宝量</param>
  233. /// <param name="cost_money">当游戏设定为游戏币不够时,用元宝替代</param>
  234. public void ReportItemBuy(int server, string role_id, string role_name, int role_level, int vip_level, int item_id,
  235. string item_name, string item_type, long buy_time, long expire_time, int count, int price,
  236. int yuanbao, int left_yuanbao,int free_yuanbao, int left_free_yuanbao, int cost_money)
  237. {
  238. if (SDKReport == null) return;
  239. SDKReport.ReportItemBuy( server, role_id, role_name, role_level, vip_level, item_id,
  240. item_name, item_type, buy_time, expire_time, count, price,
  241. yuanbao, left_yuanbao, free_yuanbao, left_free_yuanbao, cost_money);
  242. }
  243. /// <summary>
  244. /// 记录玩家除了购买物品/游戏币之外的其他消耗元宝的行为
  245. /// </summary>
  246. /// <param name="server">服务器编号id,要求是正整数的编号,如10001</param>
  247. /// <param name="role_id">角色唯一标识,在所有服唯一。</param>
  248. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  249. /// <param name="role_level">角色等级</param>
  250. /// <param name="vip_level">角色vip等级</param>
  251. /// <param name="reason">消耗原因</param>
  252. /// <param name="details">具体的信息,比如购买体力后,体力从多少到多少;如果有多个道具</param>
  253. /// <param name="yuanbao">本次花费的元宝数量</param>
  254. /// <param name="left_yuanbao">购买后角色剩余元宝量</param>
  255. /// <param name="free_yuanbao">本次购买花费的免费元宝量,值为正数</param>
  256. /// <param name="left_free_yuanbao">购买后角色剩余免费元宝量,值为正数</param>
  257. /// <param name="use_time">使用元宝的时间</param>
  258. public void ReportYuanbaoUse(int server, string role_id, string role_name, int role_level, int vip_level,
  259. string reason, YuanbaoUseDetails details, int yuanbao, int left_yuanbao,
  260. int free_yuanbao, int left_free_yuanbao, long use_time)
  261. {
  262. if (SDKReport == null) return;
  263. SDKReport.ReportYuanbaoUse(server, role_id, role_name, role_level, vip_level,
  264. reason, details, yuanbao, left_yuanbao,
  265. free_yuanbao, left_free_yuanbao, use_time);
  266. }
  267. /// <summary>
  268. /// 记录玩家游戏所有获得元宝的的行为
  269. /// </summary>
  270. /// <param name="server">服务器编号id,要求是正整数的编号,如10001</param>
  271. /// <param name="role_id">角色唯一标识,在所有服唯一。</param>
  272. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  273. /// <param name="role_level">角色等级</param>
  274. /// <param name="vip_level">角色vip等级</param>
  275. /// <param name="reason">获取原因,如节日赠送等</param>
  276. /// <param name="yuanbao">本次获得的元宝数量</param>
  277. /// <param name="free_yuanbao">获得的免费元宝量(首充免费送的,充值活动免费送的,游戏内任务免费送的,其他只要是没花钱就获得的元宝都需要记录到免费元宝),值为正数</param>
  278. /// <param name="left_yuanbao">获取后剩余元宝量</param>
  279. /// <param name="left_free_yuanbao">剩余的免费元宝</param>
  280. /// <param name="gain_time">获取时间</param>
  281. public void ReportYuanbaoGain(int server, string role_id, string role_name, int role_level, int vip_level,
  282. string reason, int yuanbao, int free_yuanbao, int left_yuanbao, int left_free_yuanbao,
  283. long gain_time)
  284. {
  285. if (SDKReport == null) return;
  286. SDKReport.ReportYuanbaoGain( server, role_id, role_name, role_level, vip_level,
  287. reason, yuanbao, free_yuanbao, left_yuanbao, left_free_yuanbao,
  288. gain_time);
  289. }
  290. /// <summary>
  291. /// 记录用户客户端占率、网络延迟的情况(每隔1min在程序参数中记录,并将5min内的list数值上传一次log)
  292. /// </summary>
  293. /// <param name="server">服务器编号id,要求是正整数的编号,如10001</param>
  294. /// <param name="role_id">角色唯一标识,在所有服唯一。</param>
  295. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  296. /// <param name="scene_id">玩家进入的场景唯一标识(若无则留空)</param>
  297. /// <param name="team_id">队伍id(若无则留空)</param>
  298. /// <param name="quality_level">当前画质模式(省电-平衡-最优)</param>
  299. /// <param name="is_battle">记录的期间是否处于战斗状态</param>
  300. /// <param name="multi_players">平均同屏人数</param>
  301. /// <param name="fps">5分钟内的帧率list,例如[21,22,24,26,28]</param>
  302. /// <param name="ping">5分钟内的ping值list,例如[98,105,118,89,93]</param>
  303. public void ReportFPS( string scene_id, string team_id,
  304. string quality_level, int is_battle, int multi_players, int[] fps, int[] ping)
  305. {
  306. if (SDKReport == null) return;
  307. SDKReport.ReportFPS( scene_id, team_id,
  308. quality_level, is_battle, multi_players, fps, ping);
  309. }
  310. /// <summary>
  311. /// 记录玩家游戏内发表的言论
  312. /// </summary>
  313. /// <param name="server">服务器编号id,要求是正整数的编号如10001</param>
  314. /// <param name="role_id">角色唯一标识,在所有服唯一。</param>
  315. /// <param name="role_name">游戏角色名称,多服可重复,单服唯一</param>
  316. /// <param name="role_level">角色等级</param>
  317. /// <param name="content">发言内容</param>
  318. /// <param name="channel">发言频道</param>
  319. /// <param name="scene">发言时所在场景</param>
  320. /// <param name="axis">发言时所在场景坐标,应该是 (x,y,z)的形式</param>
  321. /// <param name="chat_time">发言时间</param>
  322. /// <param name="y_account_id">发言对象的account_id,和玩家私聊时记录;如在公共频道发言,不用记录或者记录空字符串</param>
  323. /// <param name="y_obj">发言对象的role_id,和玩家私聊时记录;如在公共频道发言,不用记录或者记录空字符串</param>
  324. /// <param name="y_level">发言对象的等级,和玩家私聊时记录;如在公共频道发言,不用记录或者记录空字符串</param>
  325. /// <param name="y_name">发言对象的昵称,和玩家私聊时记录;如在公共频道发言,不用记录或者记录空字符串</param>
  326. public void ReportChat(int server, string role_id, string role_name, int role_level, string content, ChannelType channel,
  327. string scene, string axis, long chat_time, string y_account_id, string y_obj, int y_level,
  328. string y_name)
  329. {
  330. if (SDKReport == null) return;
  331. SDKReport.ReportChat( server, role_id, role_name, role_level, content, channel.ToString(),
  332. scene, axis, chat_time, y_account_id, y_obj, y_level,
  333. y_name);
  334. }
  335. }