QgBanner.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import Game from "../../../Scene/Game";
  2. import Tools from "../../Tools";
  3. import Global from "../../Global";
  4. import LogMgr from "../../LogMgr";
  5. export default class QgBanner {
  6. public static isLoad: boolean = false; //加载状态
  7. private static bannerAd: any; //banner对象
  8. public static isShow: boolean = false; //显示状态
  9. /**
  10. * 创建banner
  11. */
  12. public static createBanner() {
  13. return new Promise((resolve, reject) => {
  14. if (!Global.isVivo) {
  15. LogMgr.error('当前非vivo平台,无法创建Banner');
  16. reject(false);
  17. return
  18. }
  19. let unitId = Tools.getRandomByArray(Global.config.advertisingConfig.bannerAdId);
  20. if (!unitId) {
  21. LogMgr.error('BannerId获取失败:' + unitId);
  22. reject(false);
  23. return
  24. }
  25. let banner_exm = Game.Ins.banner
  26. let size = Tools.getRealSize(banner_exm)
  27. let refreshTime = 30 ;
  28. if (Global.config.bannerRefreshTime >= 30) {
  29. refreshTime = Global.config.bannerRefreshTime ;
  30. }
  31. let bannerParam = {
  32. adUnitId: unitId,
  33. style: {
  34. left: size.left,
  35. top: size.top,
  36. },
  37. adIntervals: refreshTime,
  38. };
  39. // @ts-ignore
  40. this.bannerAd = qg.createBannerAd(bannerParam);
  41. this.bannerAd.onLoad((res) => {
  42. this.isLoad = true;
  43. LogMgr.log('Banner广告加载完成-onload触发', JSON.stringify(res));
  44. resolve(true);
  45. })
  46. this.bannerAd.onClose(()=>{
  47. LogMgr.log('Banner关闭......')
  48. })
  49. this.bannerAd.onError((err) => {
  50. LogMgr.error('Banner错误:err:', err);
  51. reject(false);
  52. })
  53. })
  54. }
  55. /**
  56. *展示Banner
  57. */
  58. public static showBanner() {
  59. if (!this.isLoad) {
  60. this.createBanner().then();
  61. LogMgr.error('Banner未创建或未加载,无法显示')
  62. return
  63. }
  64. if (this.isShow) {
  65. LogMgr.error('Banner已显示,无法重复显示') ;
  66. return
  67. }
  68. this.bannerAd.show().then(() => {
  69. this.isShow = true;
  70. }).catch((err) => {
  71. LogMgr.error('Banner显示错误:', err);
  72. })
  73. }
  74. /**
  75. * 隐藏Banner
  76. */
  77. public static hideBanner() {
  78. if (!this.isLoad) {
  79. LogMgr.error('Banner未创建或未加载,无法隐藏')
  80. return
  81. }
  82. if (!this.isShow) {
  83. LogMgr.error('Banner未显示,无需隐藏')
  84. return
  85. }
  86. this.bannerAd.hide();
  87. this.isShow = false;
  88. }
  89. /**
  90. * 销毁Banner实例
  91. */
  92. public static destroyBanner() {
  93. return new Promise((resolve) => {
  94. if (!this.bannerAd) {
  95. LogMgr.error('Banner未创建>>>无法destroy()');
  96. resolve(false);
  97. return
  98. }
  99. this.bannerAd.destroy();
  100. this.isLoad = false;
  101. this.isShow = false;
  102. resolve(true);
  103. })
  104. }
  105. /**
  106. * 刷新Banner
  107. */
  108. public static cutBanner() {
  109. return new Promise((resolve) => {
  110. this.destroyBanner().then((res) => {
  111. if (res) {
  112. this.createBanner().then(()=>{
  113. this.showBanner();
  114. });
  115. }
  116. resolve(true);
  117. })
  118. })
  119. }
  120. }