ATRewardVideo.ts 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. import { DataEventId, VideoAdType } from "../../../../../game/data/GameData";
  2. import { zgSingleton } from "../../zgSingleton";
  3. import ATSDKMgr, { AdPlayStateType } from "./ATSDKMgr";
  4. /**
  5. * 激励视频广告
  6. * @description
  7. * @author 冯聪
  8. */
  9. export class ATRewardVideo extends zgSingleton {
  10. /** */
  11. private ATRewardVideoJS: any;
  12. /** 激励视频状态 */
  13. public reawardAdState: RewardAdState = 0;
  14. /** 是否加载完显示 */
  15. public ifLoadShow: boolean = false;
  16. /**是否观看完毕 */
  17. public canGet: boolean = false;
  18. /** 去重点击状态 */
  19. private singleClick = false;
  20. init() {
  21. this.ATRewardVideoJS = cc["ATRewardVideoJS"];
  22. this.ATRewardVideoJS.proxy = this;
  23. this.ATRewardVideoJS.init();
  24. this.canGet = false;
  25. if (this.reawardAdState == RewardAdState.Unload) {
  26. this.loadAd();
  27. }
  28. }
  29. /** 广告位id */
  30. placementID() {
  31. if (cc.sys.os === cc.sys.OS_IOS) {
  32. return ATSDKMgr.topon_rewardVideo_placementId;
  33. } else if (cc.sys.os === cc.sys.OS_ANDROID) {
  34. return ATSDKMgr.topon_rewardVideo_placementId;
  35. }
  36. }
  37. //广告逻辑部分------------------------------------------------------------------------
  38. /** 检测是否准备完毕 */
  39. hasAdReady() {
  40. return this.ATRewardVideoJS.hasAdReady();
  41. }
  42. /** 加载广告 */
  43. loadAd() {
  44. console.log("anythink === 加载激励视频广告", RewardAdState[this.reawardAdState]);
  45. if (this.reawardAdState == RewardAdState.Loading) {
  46. return;
  47. }
  48. console.log("anythink === 加载激励视频广告 onload", RewardAdState[this.reawardAdState]);
  49. this.reawardAdState = RewardAdState.Loading;
  50. this.ATRewardVideoJS.loadAd(gData.loginData.uin, "userDataKey");
  51. // //test
  52. // this.ATRewardVideoJS.loadAd("userDataID", "userDataKey");
  53. }
  54. /** 显示广告 */
  55. showAd() {
  56. if (this.reawardAdState != RewardAdState.LoadSuccess) {
  57. this.loadAd();
  58. this.ifLoadShow = true;
  59. return;
  60. }
  61. this.ATRewardVideoJS.showAd();
  62. }
  63. //广告回调部分------------------------------------------------------------------------
  64. /**
  65. * 激励视频加载完毕
  66. * @param placementId 广告位id
  67. */
  68. onRewardedVideoAdLoaded(placementId: string) {
  69. // ATJSSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdLoaded(" + placementId + ")");
  70. // ATRewardVideo.getInstance().showAd()
  71. console.log("anythink === 加载激励视频广告成功", this.hasAdReady(), RewardAdState[this.reawardAdState])
  72. this.reawardAdState = RewardAdState.LoadSuccess;
  73. if (this.ifLoadShow) {
  74. this.showAd();
  75. this.ifLoadShow = false;
  76. }
  77. }
  78. /**
  79. * 激励视频加载失败
  80. * @param placementId 广告位id
  81. * @param errorInfo 错误信息
  82. */
  83. onRewardedVideoAdFailed(placementId, errorInfo) {
  84. // ATJSSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdFailed(" + placementId + ", " + errorInfo + ")");
  85. console.log("anythink === 加载激励视频广告失败", RewardAdState[this.reawardAdState]);
  86. this.reawardAdState = RewardAdState.LoadFail;
  87. }
  88. /**
  89. * 激励视频开始播放
  90. * @param placementId 广告位id
  91. * @param callbackInfo 回调信息
  92. */
  93. onRewardedVideoAdPlayStart(placementId, callbackInfo) {
  94. //ATJSSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayStart(" + placementId + ", " + callbackInfo + ")");
  95. //视频埋点开始
  96. let data = JSON.parse(callbackInfo);
  97. gData.adData.updateADLog(4, placementId, data);
  98. gData.adData.updateData(placementId, data);
  99. mk.data.sendDataEvent(DataEventId.video_init, mk.ad.videoAdType);
  100. this.reawardAdState = RewardAdState.Unload;
  101. let times = mk.storage.getStorage('ad_videoEcpm');
  102. if (!times) {
  103. times = 1;
  104. }
  105. else {
  106. times++;
  107. }
  108. mk.storage.setStorage('ad_videoEcpm', times);
  109. if (times <= 300) {
  110. if (times <= 50) {
  111. mk.data.sendDataEventValue(DataEventId.ad_videoEcpm, `ad_video_ecpm${times}`, data.adsource_price);
  112. }
  113. else if (times % 10 == 0) {
  114. mk.data.sendDataEventValue(DataEventId.ad_videoEcpm, `ad_video_ecpm${times}`, data.adsource_price);
  115. }
  116. }
  117. //点击关闭的时候重新加载(亲测,即使在start这边 加载 也是在点击关闭时候才返回成功)
  118. //this.loadAd();
  119. this.singleClick = true;
  120. }
  121. /**
  122. * 激励视频播放完毕
  123. * @param placementId 广告位id
  124. * @param callbackInfo 回调信息
  125. */
  126. onRewardedVideoAdPlayEnd(placementId, callbackInfo) {
  127. //ATJSSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayEnd(" + placementId + ", " + callbackInfo + ")");
  128. }
  129. /**
  130. * 激励视频播放失败
  131. * @param placementId 广告位id
  132. * @param errorInfo 错误信息
  133. * @param callbackInfo 回调信息
  134. */
  135. onRewardedVideoAdPlayFailed(placementId, errorInfo, callbackInfo) {
  136. mk.console.log("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayFailed placementId >> ", placementId);
  137. mk.console.log("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayFailed errorInfo ", errorInfo);
  138. mk.console.log("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayFailed callbackInfo ", callbackInfo);
  139. let data = JSON.parse(callbackInfo)
  140. gData.adData.updateADLog(5, placementId, data);
  141. ATSDKMgr.getInstance().watchVideoAdCallBack(AdPlayStateType.PlayFail);
  142. }
  143. /**
  144. * 激励视频点击关闭
  145. * @param placementId 广告位id
  146. * @param callbackInfo 回调信息
  147. */
  148. onRewardedVideoAdClosed(placementId, callbackInfo) {
  149. // ATJSSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdClosed(" + placementId + ", " + callbackInfo + ")");
  150. let data = JSON.parse(callbackInfo)
  151. let request_id = ''
  152. if (data.ext_info && data.ext_info.request_id) {
  153. request_id = data.ext_info.request_id
  154. }
  155. if (this.canGet) {
  156. ATSDKMgr.getInstance().watchVideoAdCallBack(AdPlayStateType.WatchEnd,request_id);
  157. mk.data.sendDataEvent(DataEventId.video_end, mk.ad.videoAdType);
  158. }
  159. else {
  160. ATSDKMgr.getInstance().watchVideoAdCallBack(AdPlayStateType.Cancel);
  161. }
  162. this.canGet = false;
  163. this.loadAd();
  164. }
  165. /**
  166. * 激励视频被点击
  167. * @param placementId
  168. * @param callbackInfo
  169. */
  170. onRewardedVideoAdPlayClicked(placementId, callbackInfo) {
  171. // ATJSSDK.printLog("AnyThinkRewardedVideoDemo::onRewardedVideoAdPlayClicked(" + placementId + ", " + callbackInfo + ")");
  172. let data = JSON.parse(callbackInfo)
  173. gData.adData.updateADLog(51, placementId, data);
  174. mk.data.sendDataEvent(DataEventId.ad_click, '激励视频点击');
  175. if (this.singleClick) {
  176. this.singleClick = false;
  177. gData.adData.updateADLog(71, placementId, data);
  178. }
  179. }
  180. /**
  181. * 能获取奖励
  182. * @description 引擎的自动判断
  183. * @param placementId 广告位id
  184. * @param callbackInfo 回调信息
  185. */
  186. onReward(placementId, callbackInfo) {
  187. // ATJSSDK.printLog("AnyThinkRewardedVideoDemo::onReward(" + placementId + ", " + callbackInfo + ")");
  188. this.canGet = true;
  189. }
  190. }
  191. /** 激励视频广告加载状态 */
  192. export enum RewardAdState {
  193. /** 未加载 */
  194. Unload = 0,
  195. /** 加载中 */
  196. Loading = 1,
  197. /** 加载成功 */
  198. LoadSuccess = 2,
  199. /** 加载失败 */
  200. LoadFail = 3,
  201. /** 播放结束 */
  202. PlayEnd = 4
  203. }