ADHandler.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // ADHandler.ts
  2. import { CocosHandlerType, CocosHandler } from './CocosHandler';
  3. import { AD_TYPE } from '../config/GameDefine';
  4. import { oops } from 'db://oops-framework/core/Oops';
  5. import { UIID } from '../config/GameUIConfig';
  6. import { smc } from '../SingletonModuleComp';
  7. import { ServerHandler } from './ServerHandler';
  8. import { LoginHandler } from './LoginHandler';
  9. export class ADHandler {
  10. private static _inst: ADHandler;
  11. public static get inst(): ADHandler {
  12. if (!this._inst) {
  13. this._inst = new ADHandler();
  14. }
  15. return this._inst;
  16. }
  17. showAd = async (id: string) => {
  18. const { method, param } = this.buildAdParam(id);
  19. const data: CocosHandlerType = {
  20. method,
  21. param: JSON.stringify(param)
  22. };
  23. return await CocosHandler.inst.sendMessageToAndroid(data, `广告 ${id}`);
  24. };
  25. private buildAdParam(id: string): { method: string, param: any } {
  26. const param: any = {
  27. funcId: id,
  28. callback: {
  29. onLoaded: '',
  30. onShow: '',
  31. onLoadFailed: '',
  32. onShowFailed: '',
  33. onClose: ''
  34. }
  35. };
  36. let method = '';
  37. switch (id) {
  38. case AD_TYPE.Start:
  39. method = 'ad.splash';
  40. param.callback.onLoadFailed = 'ADHandler.inst.adSplashLoadFailed';
  41. param.callback.onClose = 'ADHandler.inst.adSplashClose';
  42. break;
  43. case AD_TYPE.Jion_Main:
  44. case AD_TYPE.Double_Close:
  45. case AD_TYPE.Rebates:
  46. case AD_TYPE.Double_Speed_Close:
  47. method = 'ad.interstitial';
  48. param.callback.onShowFailed = 'ADHandler.inst.adInterstitialShowFailed';
  49. param.callback.onClose = 'ADHandler.inst.adInterstitialClose';
  50. break;
  51. default:
  52. method = 'ad.reward';
  53. param.callback.onShow = 'ADHandler.inst.adRewardShow';
  54. param.callback.onClose = 'ADHandler.inst.adRewardClose';
  55. param.callback.onShowFailed = 'ADHandler.inst.adRewardShowFailed';
  56. }
  57. return { method, param };
  58. }
  59. adSplashClose = async () => {
  60. if (oops.gui.has(UIID.KindTips)) oops.gui.remove(UIID.KindTips);
  61. if (oops.gui.has(UIID.Retention)) oops.gui.remove(UIID.Retention);
  62. const result = await LoginHandler.inst.savePrivacyStatus(true);
  63. if (result?.code === 0) {
  64. ServerHandler.inst.getAccountInfo();
  65. }
  66. };
  67. adSplashLoadFailed = () => {
  68. console.log('[广告] 启屏广告加载失败');
  69. ServerHandler.inst.getAccountInfo();
  70. };
  71. adInterstitialClose = (type: boolean) => {
  72. console.log('[广告] 插屏广告关闭', type);
  73. };
  74. adInterstitialShowFailed = () => {
  75. console.log('[广告] 插屏广告显示失败');
  76. };
  77. adRewardClose = (state: boolean) => {
  78. console.log("[广告] 激励视频关闭")
  79. smc.game.GameModel.isDone = state;
  80. };
  81. adRewardShow = (str: string) => {
  82. const data = JSON.parse(str);
  83. ServerHandler.inst.getSign(data.price);
  84. };
  85. adRewardShowFailed = (str: string) => {
  86. console.log('[广告] 激励视频展示失败', str);
  87. };
  88. }
  89. window["ADHandler"] = ADHandler;