123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- import ATAndroidNativeJS from "./Android/ATAndroidNativeJS";
- import ATiOSNativeJS from "./iOS/ATiOSNativeJS";
- type PlatformBridge = {
- loadNative: (placementId: string, settings: string) => void;
- setAdListener: (eventJSON: string) => void;
- hasAdReady: (placementId: string) => boolean;
- checkAdStatus: (placementId: string) => string;
- showAd: (placementId: string, adViewProperty: string) => void;
- showAdInScenario: (placementId: string, adViewProperty: string, scenario?: string) => void;
- removeAd: (placementId: string) => void;
- };
- let platformBridge: PlatformBridge | null = null;
- const initPlatformBridge = (): PlatformBridge | null => {
- if (cc.sys.os === cc.sys.OS_IOS) {
- return null;
- } else if (cc.sys.os === cc.sys.OS_ANDROID) {
- return ATAndroidNativeJS;
- }
- return null;
- };
- platformBridge = initPlatformBridge();
- interface DeveloperCallback {
- onNativeAdLoaded?: (placementId: string) => void;
- onNativeAdLoadFail?: (placementId: string, errorInfo: any) => void;
- onNativeAdShow?: (placementId: string, callbackInfo: any) => void;
- onNativeAdClick?: (placementId: string, callbackInfo: any) => void;
- onNativeAdVideoStart?: (placementId: string) => void;
- onNativeAdVideoEnd?: (placementId: string) => void;
- onNativeAdCloseButtonTapped?: (placementId: string, callbackInfo: any) => void;
- }
- class ATNativeListener {
- developerCallback: DeveloperCallback | null = null;
- onNativeAdLoaded(placementId: string) {
- this.developerCallback?.onNativeAdLoaded?.(placementId);
- }
- onNativeAdLoadFail(placementId: string, errorInfo: any) {
- this.developerCallback?.onNativeAdLoadFail?.(placementId, errorInfo);
- }
- onNativeAdShow(placementId: string, callbackInfo: any) {
- this.developerCallback?.onNativeAdShow?.(placementId, callbackInfo);
- }
- onNativeAdClick(placementId: string, callbackInfo: any) {
- this.developerCallback?.onNativeAdClick?.(placementId, callbackInfo);
- }
- onNativeAdVideoStart(placementId: string) {
- this.developerCallback?.onNativeAdVideoStart?.(placementId);
- }
- onNativeAdVideoEnd(placementId: string) {
- this.developerCallback?.onNativeAdVideoEnd?.(placementId);
- }
- onNativeAdCloseButtonTapped(placementId: string, callbackInfo: any) {
- this.developerCallback?.onNativeAdCloseButtonTapped?.(placementId, callbackInfo);
- }
- }
- const LoadedCallbackKey = "NativeLoaded";
- const LoadFailCallbackKey = "NativeLoadFail";
- const CloseCallbackKey = "NativeCloseButtonTapped";
- const ClickCallbackKey = "NativeClick";
- const ShowCallbackKey = "NativeShow";
- const VideoStartKey = "NativeVideoStart";
- const VideoEndKey = "NativeVideoEnd";
- class ATNativeSDK {
- ATNativeListener: ATNativeListener = new ATNativeListener();
- loadNative(placementId: string, settings: Record<string, any> = {}) {
- if (platformBridge) {
- platformBridge.loadNative(placementId, JSON.stringify(settings));
- } else {
- cc.log("You must run on Android or iOS.");
- }
- }
- setAdListener(listener: DeveloperCallback) {
- const eventJSON: Record<string, string> = {
- [LoadedCallbackKey]: "ATNativeJSSDK.ATNativeListener.onNativeAdLoaded",
- [LoadFailCallbackKey]: "ATNativeJSSDK.ATNativeListener.onNativeAdLoadFail",
- [CloseCallbackKey]: "ATNativeJSSDK.ATNativeListener.onNativeAdCloseButtonTapped",
- [ClickCallbackKey]: "ATNativeJSSDK.ATNativeListener.onNativeAdClick",
- [ShowCallbackKey]: "ATNativeJSSDK.ATNativeListener.onNativeAdShow",
- [VideoStartKey]: "ATNativeJSSDK.ATNativeListener.onNativeAdVideoStart",
- [VideoEndKey]: "ATNativeJSSDK.ATNativeListener.onNativeAdVideoEnd"
- };
- if (platformBridge) {
- platformBridge.setAdListener(JSON.stringify(eventJSON));
- } else {
- cc.log("You must run on Android or iOS.");
- }
- this.ATNativeListener.developerCallback = listener;
- }
- hasAdReady(placementId: string): boolean {
- if (platformBridge) {
- return platformBridge.hasAdReady(placementId);
- } else {
- cc.log("You must run on Android or iOS.");
- }
- return false;
- }
- checkAdStatus(placementId: string): string {
- if (platformBridge) {
- return platformBridge.checkAdStatus(placementId);
- } else {
- cc.log("You must run on Android or iOS.");
- }
- return "";
- }
- showAd(placementId: string, adViewProperty: AdViewProperty) {
- if (platformBridge) {
- platformBridge.showAd(placementId, JSON.stringify(adViewProperty.getAdViewProperty()));
- } else {
- cc.log("You must run on Android or iOS.");
- }
- }
- showAdInScenario(placementId: string, adViewProperty: AdViewProperty, scenario: string = "") {
- if (platformBridge) {
- platformBridge.showAdInScenario(placementId, JSON.stringify(adViewProperty.getAdViewProperty()), scenario);
- } else {
- cc.log("You must run on Android or iOS.");
- }
- }
- removeAd(placementId: string) {
- if (platformBridge) {
- platformBridge.removeAd(placementId);
- } else {
- cc.log("You must run on Android or iOS.");
- }
- }
- createLoadAdSize(width: number, height: number): Record<string, number> {
- return { width, height };
- }
- }
- class AdViewProperty {
- parent: string | null = null;
- appIcon: string | null = null;
- mainImage: string | null = null;
- title: string | null = null;
- desc: string | null = null;
- adLogo: string | null = null;
- cta: string | null = null;
- rating: number | null = null;
- dislike: number | null = null;
- createItemViewProperty(
- x: number,
- y: number,
- width: number,
- height: number,
- backgroundColor: string,
- textColor: string,
- textSize: number,
- isCustomClick: boolean = false
- ): Record<string, any> {
- return {
- x,
- y,
- width,
- height,
- backgroundColor,
- textColor,
- textSize,
- isCustomClick
- };
- }
- getAdViewProperty(): Record<string, any> {
- const nativeViewProperty: Record<string, any> = {};
- if (this.parent != null) {
- nativeViewProperty["parent"] = this.parent;
- }
- if (this.appIcon != null) {
- nativeViewProperty["icon"] = this.appIcon;
- }
- if (this.mainImage != null) {
- nativeViewProperty["mainImage"] = this.mainImage;
- }
- if (this.title != null) {
- nativeViewProperty["title"] = this.title;
- }
- if (this.desc != null) {
- nativeViewProperty["desc"] = this.desc;
- }
- if (this.adLogo != null) {
- nativeViewProperty["adLogo"] = this.adLogo;
- }
- if (this.cta != null) {
- nativeViewProperty["cta"] = this.cta;
- }
- if (this.rating != null) {
- nativeViewProperty["rating"] = this.rating;
- }
- if (this.dislike != null) {
- nativeViewProperty["dislike"] = this.dislike;
- }
- return nativeViewProperty;
- }
- }
- (window as any).ATNativeJSSDK = new ATNativeSDK();
- export default ATNativeSDK;
|