ATRewardedVideoJSSDK.ts 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. // Importing platform-specific SDKs
  2. import ATAndroidRewardedVideoJS from './Android/ATAndroidRewardedVideoJS';
  3. import ATiOSRewardedVideoJS from './iOS/ATiOSRewardedVideoJS';
  4. import ATJSSDK from './ATJSSDK';
  5. // Platform bridge initialization
  6. const initPlatformBridge = () => {
  7. if (cc.sys.os === cc.sys.OS_IOS) {
  8. return ATiOSRewardedVideoJS;
  9. } else if (cc.sys.os === cc.sys.OS_ANDROID) {
  10. return ATAndroidRewardedVideoJS;
  11. }
  12. };
  13. const platformBridge = initPlatformBridge();
  14. // Interface for developer callback methods
  15. interface DeveloperCallback {
  16. onRewardedVideoAdLoaded?: (placementId: string) => void;
  17. onRewardedVideoAdFailed?: (placementId: string, errorInfo: string) => void;
  18. onRewardedVideoAdPlayStart?: (placementId: string, callbackInfo: any) => void;
  19. onRewardedVideoAdPlayEnd?: (placementId: string, callbackInfo: any) => void;
  20. onRewardedVideoAdPlayFailed?: (placementId: string, errorInfo: string, callbackInfo: any) => void;
  21. onRewardedVideoAdClosed?: (placementId: string, callbackInfo: any) => void;
  22. onRewardedVideoAdPlayClicked?: (placementId: string, callbackInfo: any) => void;
  23. onReward?: (placementId: string, callbackInfo: any) => void;
  24. }
  25. // Interface for the SDK
  26. interface ATRewardedVideoSDK {
  27. userIdKey: string;
  28. userDataKey: string;
  29. ATRewardedVideoListener: {
  30. developerCallback: DeveloperCallback | null;
  31. onRewardedVideoAdLoaded: (placementId: string) => void;
  32. onRewardedVideoAdFailed: (placementId: string, errorInfo: string) => void;
  33. onRewardedVideoAdPlayStart: (placementId: string, callbackInfo: any) => void;
  34. onRewardedVideoAdPlayEnd: (placementId: string, callbackInfo: any) => void;
  35. onRewardedVideoAdPlayFailed: (placementId: string, errorInfo: string, callbackInfo: any) => void;
  36. onRewardedVideoAdClosed: (placementId: string, callbackInfo: any) => void;
  37. onRewardedVideoAdPlayClicked: (placementId: string, callbackInfo: any) => void;
  38. onReward: (placementId: string, callbackInfo: any) => void;
  39. };
  40. loadRewardedVideo(placementId: string, settings?: object): void;
  41. setAdListener(listener: DeveloperCallback): void;
  42. hasAdReady(placementId: string): boolean;
  43. checkAdStatus(placementId: string): string | boolean;
  44. showAd(placementId: string): void;
  45. showAdInScenario(placementId: string, scenario?: string): void;
  46. }
  47. // The actual SDK implementation
  48. const ATRewardedVideoSDK: ATRewardedVideoSDK = {
  49. userIdKey: "userID",
  50. userDataKey: "media_ext",
  51. ATRewardedVideoListener: {
  52. developerCallback: null,
  53. onRewardedVideoAdLoaded(placementId: string) {
  54. ATJSSDK.printLog(`ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdLoaded(${placementId})`);
  55. this.developerCallback?.onRewardedVideoAdLoaded?.(placementId);
  56. },
  57. onRewardedVideoAdFailed(placementId: string, errorInfo: string) {
  58. ATJSSDK.printLog(`ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdFailed(${placementId}, ${errorInfo})`);
  59. this.developerCallback?.onRewardedVideoAdFailed?.(placementId, errorInfo);
  60. },
  61. onRewardedVideoAdPlayStart(placementId: string, callbackInfo: any) {
  62. ATJSSDK.printLog(`ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdPlayStart(${placementId}, ${callbackInfo})`);
  63. this.developerCallback?.onRewardedVideoAdPlayStart?.(placementId, callbackInfo);
  64. },
  65. onRewardedVideoAdPlayEnd(placementId: string, callbackInfo: any) {
  66. ATJSSDK.printLog(`ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdPlayEnd(${placementId}, ${callbackInfo})`);
  67. this.developerCallback?.onRewardedVideoAdPlayEnd?.(placementId, callbackInfo);
  68. },
  69. onRewardedVideoAdPlayFailed(placementId: string, errorInfo: string, callbackInfo: any) {
  70. ATJSSDK.printLog(`ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdPlayFailed(${placementId}, ${callbackInfo})`);
  71. this.developerCallback?.onRewardedVideoAdPlayFailed?.(placementId, errorInfo, callbackInfo);
  72. },
  73. onRewardedVideoAdClosed(placementId: string, callbackInfo: any) {
  74. ATJSSDK.printLog(`ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdClosed(${placementId}, ${callbackInfo})`);
  75. this.developerCallback?.onRewardedVideoAdClosed?.(placementId, callbackInfo);
  76. },
  77. onRewardedVideoAdPlayClicked(placementId: string, callbackInfo: any) {
  78. ATJSSDK.printLog(`ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdPlayClicked(${placementId}, ${callbackInfo})`);
  79. this.developerCallback?.onRewardedVideoAdPlayClicked?.(placementId, callbackInfo);
  80. },
  81. onReward(placementId: string, callbackInfo: any) {
  82. ATJSSDK.printLog(`ATRewardedVideoJSSDK.ATRewardedVideoListener.onReward(${placementId}, ${callbackInfo})`);
  83. this.developerCallback?.onReward?.(placementId, callbackInfo);
  84. }
  85. },
  86. loadRewardedVideo(placementId: string, settings: object = {}) {
  87. if (platformBridge) {
  88. platformBridge.loadRewardedVideo(placementId, JSON.stringify(settings));
  89. } else {
  90. cc.log("You must run on Android or iOS.");
  91. }
  92. },
  93. setAdListener(listener: DeveloperCallback) {
  94. const eventJSON: { [key: string]: string } = {};
  95. eventJSON[LoadedCallbackKey] = "ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdLoaded";
  96. eventJSON[LoadFailCallbackKey] = "ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdFailed";
  97. eventJSON[PlayStartCallbackKey] = "ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdPlayStart";
  98. eventJSON[PlayEndCallbackKey] = "ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdPlayEnd";
  99. eventJSON[PlayFailCallbackKey] = "ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdPlayFailed";
  100. eventJSON[CloseCallbackKey] = "ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdClosed";
  101. eventJSON[ClickCallbackKey] = "ATRewardedVideoJSSDK.ATRewardedVideoListener.onRewardedVideoAdPlayClicked";
  102. eventJSON[RewardCallbackKey] = "ATRewardedVideoJSSDK.ATRewardedVideoListener.onReward";
  103. if (platformBridge) {
  104. platformBridge.setAdListener(JSON.stringify(eventJSON));
  105. } else {
  106. cc.log("You must run on Android or iOS.");
  107. }
  108. this.ATRewardedVideoListener.developerCallback = listener;
  109. },
  110. hasAdReady(placementId: string) {
  111. if (platformBridge) {
  112. return platformBridge.hasAdReady(placementId);
  113. } else {
  114. cc.log("You must run on Android or iOS.");
  115. }
  116. return false;
  117. },
  118. checkAdStatus(placementId: string ) {
  119. if (platformBridge) {
  120. return platformBridge.checkAdStatus(placementId);
  121. } else {
  122. cc.log("You must run on Android or iOS.");
  123. }
  124. return false;
  125. },
  126. showAd(placementId: string) {
  127. if (platformBridge) {
  128. platformBridge.showAd(placementId);
  129. } else {
  130. cc.log("You must run on Android or iOS.");
  131. }
  132. },
  133. showAdInScenario(placementId: string, scenario: string = "") {
  134. if (platformBridge) {
  135. platformBridge.showAdInScenario(placementId, scenario);
  136. } else {
  137. cc.log("You must run on Android or iOS.");
  138. }
  139. }
  140. };
  141. // Constant keys for callbacks
  142. const LoadedCallbackKey = "RewardedVideoLoaded";
  143. const LoadFailCallbackKey = "RewardedVideoLoadFail";
  144. const PlayStartCallbackKey = "RewardedVideoPlayStart";
  145. const PlayEndCallbackKey = "RewardedVideoPlayEnd";
  146. const PlayFailCallbackKey = "RewardedVideoPlayFail";
  147. const CloseCallbackKey = "RewardedVideoClose";
  148. const ClickCallbackKey = "RewardedVideoClick";
  149. const RewardCallbackKey = "RewardedVideoReward";
  150. // Exposing the SDK globally
  151. (window as any).ATRewardedVideoJSSDK = ATRewardedVideoSDK;
  152. export default ATRewardedVideoSDK;