import { _decorator, Component, Node, sys } from 'cc'; import { statistics_collect_rewardVideo_data } from '../data/data'; import { gameManager } from './run/gameManager'; import { http } from './http'; import { config } from './config'; import { SdkUtil } from './sdkUtil'; const { ccclass, property } = _decorator; @ccclass('statisticsManager') export class statisticsManager extends Component { private static _instance: statisticsManager; public static get instance() { if (this._instance) { return this._instance; } this._instance = new statisticsManager(); return this._instance; } /** * 获取收集广告数据 * * @param {number} level_id * @param {number} actionType * @returns * @memberof StatisticsManager */ public static get_collect_ads_data(level_id: number, ad_res:any, actionType=config.STATISTICS_ACTION_TYPE.UNKNOWN): statistics_collect_rewardVideo_data { if(gameManager.isFreeAds()) { return null } if(actionType == config.STATISTICS_ACTION_TYPE.UNKNOWN) { console.log('统计失败 - 未设置统计类型') return null } let collect_data = new statistics_collect_rewardVideo_data() collect_data.user_id = gameManager.getUserData().id collect_data.level_id = level_id collect_data.ads_status = ad_res.isEnded ? 1 : 0 if(actionType==config.STATISTICS_ACTION_TYPE.TI_QIAN_JIE_SUO||actionType==config.STATISTICS_ACTION_TYPE.LIN_SHI_24_XIAO_SHI) { collect_data.ads_scene = gameManager.Singleton.getSceneCurIndex() } else { collect_data.ads_scene = gameManager.Singleton.getSceneCurIndex() + 1 } if(ad_res.isEnded==false) { if(ad_res.errorString==undefined||ad_res.errorString==null) { collect_data.ads_remarks = '未观看完视频广告' } else { collect_data.ads_remarks = ad_res.errorString } } collect_data.ads_action = actionType collect_data.platform = SdkUtil.getPlatformIdentify() return collect_data } /** * 请求收集激励视频广告数据 * * @param {statistics_collect_rewardVideo_data} data_item * @param {Function} call_back * @returns * @memberof StatisticsManager */ public static request_collect_rewardVideoData(data_item: statistics_collect_rewardVideo_data, call_back: any = null) { if(gameManager.isFreeAds()) { return } if (data_item == null) { return } if (data_item.ads_action == config.STATISTICS_ACTION_TYPE.UNKNOWN) { console.log('统计失败 - 未设置统计类型') return } let data_string = JSON.stringify(data_item) // console.log(data_string) let request_data = { 'adsdata': data_string} // console.log('request_data=',request_data) http.statistics_post(http.statistics_ads(),request_data,(_err,c_data)=> { console.log('广告统计: _err=', _err, 'c_dat=', c_data) if (call_back != null) { call_back() } }) } //当前上次记录用户关卡key private static cur_last_record_user_level_key:string = '' // 开始记录用户关卡 public static startRecordUserLevel() { if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME){ return } this.cur_last_record_user_level_key = '' } // 上传记录用户关卡 public static uploadRecordUserLevel(isComplete:boolean) { if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME){ return } let level_id = gameManager.Singleton.getLevelData().id let ads_scene = gameManager.Singleton.getSceneCurIndex() + 1 let key = `${level_id}_${ads_scene}` if(key==this.cur_last_record_user_level_key) { // console.log('重复请求 重复请求 重复请求') return } let total_scene_number = gameManager.Singleton.getSceneCurTotalCount() let is_complete = isComplete ? 1 : 0 let data = {'level_id':level_id,'ads_scene':ads_scene,'total_scene_number':total_scene_number,'is_complete':is_complete} // console.log('数据data=',data) let request_data = {'data':JSON.stringify(data)} http.run_post(http.sync_user_level(),request_data,(_err,c_data)=>{ console.log('用户关卡: _err=', _err, 'c_dat=', c_data) if(_err==null) { this.cur_last_record_user_level_key = `${level_id}_${ads_scene}` } }) } }