statisticsManager.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import { _decorator, Component, Node, sys } from 'cc';
  2. import { statistics_collect_rewardVideo_data } from '../data/data';
  3. import { gameManager } from './run/gameManager';
  4. import { http } from './http';
  5. import { config } from './config';
  6. import { SdkUtil } from './sdkUtil';
  7. const { ccclass, property } = _decorator;
  8. @ccclass('statisticsManager')
  9. export class statisticsManager extends Component {
  10. private static _instance: statisticsManager;
  11. public static get instance() {
  12. if (this._instance) {
  13. return this._instance;
  14. }
  15. this._instance = new statisticsManager();
  16. return this._instance;
  17. }
  18. /**
  19. * 获取收集广告数据
  20. *
  21. * @param {number} level_id
  22. * @param {number} actionType
  23. * @returns
  24. * @memberof StatisticsManager
  25. */
  26. public static get_collect_ads_data(level_id: number, ad_res:any, actionType=config.STATISTICS_ACTION_TYPE.UNKNOWN): statistics_collect_rewardVideo_data {
  27. if(gameManager.isFreeAds()) {
  28. return null
  29. }
  30. if(actionType == config.STATISTICS_ACTION_TYPE.UNKNOWN) {
  31. console.log('统计失败 - 未设置统计类型')
  32. return null
  33. }
  34. let collect_data = new statistics_collect_rewardVideo_data()
  35. collect_data.user_id = gameManager.getUserData().id
  36. collect_data.level_id = level_id
  37. collect_data.ads_status = ad_res.isEnded ? 1 : 0
  38. if(actionType==config.STATISTICS_ACTION_TYPE.TI_QIAN_JIE_SUO||actionType==config.STATISTICS_ACTION_TYPE.LIN_SHI_24_XIAO_SHI) {
  39. collect_data.ads_scene = gameManager.Singleton.getSceneCurIndex()
  40. } else {
  41. collect_data.ads_scene = gameManager.Singleton.getSceneCurIndex() + 1
  42. }
  43. if(ad_res.isEnded==false) {
  44. if(ad_res.errorString==undefined||ad_res.errorString==null) {
  45. collect_data.ads_remarks = '未观看完视频广告'
  46. } else {
  47. collect_data.ads_remarks = ad_res.errorString
  48. }
  49. }
  50. collect_data.ads_action = actionType
  51. return collect_data
  52. }
  53. /**
  54. * 请求收集激励视频广告数据
  55. *
  56. * @param {statistics_collect_rewardVideo_data} data_item
  57. * @param {Function} call_back
  58. * @returns
  59. * @memberof StatisticsManager
  60. */
  61. public static request_collect_rewardVideoData(data_item: statistics_collect_rewardVideo_data, call_back: any = null) {
  62. if(gameManager.isFreeAds()) {
  63. return
  64. }
  65. if (data_item == null) {
  66. return
  67. }
  68. if (data_item.ads_action == config.STATISTICS_ACTION_TYPE.UNKNOWN) {
  69. console.log('统计失败 - 未设置统计类型')
  70. return
  71. }
  72. let data_string = JSON.stringify(data_item)
  73. // console.log(data_string)
  74. let request_data = { 'adsdata': data_string , 'platform': SdkUtil.getPlatformIdentify() }
  75. http.statistics_post(http.statistics_ads(),request_data,(_err,c_data)=> {
  76. console.log('广告统计: _err=', _err, 'c_dat=', c_data)
  77. if (call_back != null) {
  78. call_back()
  79. }
  80. })
  81. }
  82. //当前上次记录用户关卡key
  83. private static cur_last_record_user_level_key:string = ''
  84. // 开始记录用户关卡
  85. public static startRecordUserLevel() {
  86. if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME){
  87. return
  88. }
  89. this.cur_last_record_user_level_key = ''
  90. }
  91. // 上传记录用户关卡
  92. public static uploadRecordUserLevel(isComplete:boolean) {
  93. if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME){
  94. return
  95. }
  96. let level_id = gameManager.Singleton.getLevelData().id
  97. let ads_scene = gameManager.Singleton.getSceneCurIndex() + 1
  98. let key = `${level_id}_${ads_scene}`
  99. if(key==this.cur_last_record_user_level_key) {
  100. // console.log('重复请求 重复请求 重复请求')
  101. return
  102. }
  103. let total_scene_number = gameManager.Singleton.getSceneCurTotalCount()
  104. let is_complete = isComplete ? 1 : 0
  105. let data = {'level_id':level_id,'ads_scene':ads_scene,'total_scene_number':total_scene_number,'is_complete':is_complete}
  106. // console.log('数据data=',data)
  107. let request_data = {'data':JSON.stringify(data)}
  108. http.run_post(http.sync_user_level(),request_data,(_err,c_data)=>{
  109. console.log('用户关卡: _err=', _err, 'c_dat=', c_data)
  110. if(_err==null) {
  111. this.cur_last_record_user_level_key = `${level_id}_${ads_scene}`
  112. }
  113. })
  114. }
  115. }