QgRewardedAd.ts 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import Tools from "../../Tools";
  2. import Global from "../../Global";
  3. import LogMgr from "../../LogMgr";
  4. export default class QgRewardedAd {
  5. private static rewardedAd: any; //视频对象
  6. public static isLoad_Rewarded: boolean = false;
  7. private static rewardedVideoResolve = null; //视频状态返回 1 : 播放完成, 2 : 播放错误, 3 : 播放中途关闭
  8. public static createRewardedVideo() {
  9. return new Promise((resolve, reject) => {
  10. if (!Global.isVivo) {
  11. LogMgr.error('当前非vivo平台,无法创建视频') ;
  12. reject(false);
  13. return
  14. }
  15. let unitId = Tools.getRandomByArray(Global.config.advertisingConfig.rewardedVideoAdId);
  16. if (!unitId) {
  17. LogMgr.error('视频ID获取失败:' + unitId)
  18. reject(false);
  19. return
  20. }
  21. // @ts-ignore
  22. this.rewardedAd = window.qg.createRewardedVideoAd({posId: unitId});
  23. this.rewardedAd.onError(err => {
  24. LogMgr.error("激励视频广告错误", err);
  25. this.rewardedVideoResolve(2);
  26. this.rewardedVideoResolve = null;
  27. });
  28. this.rewardedAd.onClose((isEnded) => { //开启关闭监听
  29. if (isEnded.isEnded) {
  30. this.rewardedVideoResolve(1); //播放完成
  31. } else {
  32. this.rewardedVideoResolve(3); //中途关闭
  33. }
  34. this.isLoad_Rewarded = false;
  35. this.rewardedVideoResolve = null;
  36. this.loadRewardedVideo().then() ;
  37. })
  38. this.rewardedAd.onLoad((res)=> {
  39. this.isLoad_Rewarded = true;
  40. LogMgr.log('激励视频广告加载完成-onload触发', JSON.stringify(res));
  41. })
  42. resolve(true);
  43. })
  44. }
  45. /**
  46. * 加载视频
  47. */
  48. public static loadRewardedVideo() {
  49. return new Promise((resolve, reject) => {
  50. if (!this.rewardedAd) {
  51. LogMgr.error('视频未创建>>>无法load()')
  52. this.createRewardedVideo().then()
  53. reject(false)
  54. return
  55. }
  56. this.rewardedAd.load().then(() => {
  57. resolve(true);
  58. }, (error) => {
  59. LogMgr.error('视频加载失败:' + error);
  60. reject(false) ;
  61. });
  62. })
  63. }
  64. /**
  65. * show视频
  66. */
  67. public static showRewardedVideo() {
  68. return new Promise((resolve) => {
  69. this.rewardedVideoResolve = resolve;
  70. if (!this.isLoad_Rewarded) {
  71. this.rewardedVideoResolve(2);
  72. this.loadRewardedVideo().then() ;
  73. LogMgr.error('视频加载中......');
  74. return
  75. }
  76. this.rewardedAd.show().then(() => {
  77. }).catch((err) => {
  78. LogMgr.error('激励视频广告展示失败', JSON.stringify(err));
  79. })
  80. })
  81. }
  82. }