import JsbSystem from "./JsbSystem"; /** * 广告管理类脚本 * @description 显示/播放广告 * @author 冯聪 */ export default class AdSystem { /** 构造函数 * @param adSdk 传入当前使用广告sdk */ constructor(adSdk: any) { this.adSdk = adSdk; this.init(); } /** 广告sdk */ public adSdk: any = null; /** 是否显示广告 */ public ifShowAd: boolean = true; /** 视频广告回调 */ public videoAdcallBack: Function = null; /** 初始化广告 */ public init() { //初始化Topon广告SDK this.adSdk.initSDK(); } /** * 观看广告 * @param callBack 广告相关的回调 */ public watchAd(callBack: Function) { this.videoAdcallBack = callBack; if (!this.ifShowAd) { this.wacthAdSuccess() } else { if (cc.sys.platform != cc.sys.WECHAT_GAME) { if (cc.sys.os == cc.sys.OS_ANDROID) { // jsb.reflection.callStaticMethod("org/cocos2dx/javascript/config/TTAdManagerHolder", "showVideo", "(I)V", pop); this.adSdk.showVideoAd(); } else if (cc.sys.os == cc.sys.OS_IOS) { jsb.reflection.callStaticMethod("AppController", "showVideo", ""); } } else { // WxMgr.getInstance().showRewardAd(pop) } } } /** 观看广告失败 */ public watchAdFail() { mk.console.log("watchAdFail"); this.videoAdcallBack(false); } /** 观看广告取消 */ public watchAdCancel() { mk.console.log("watchAdCancel"); this.videoAdcallBack(false); } /** * 观看广告成功 * @param placementId 广告位id */ public wacthAdSuccess(placementId = '') { mk.console.log("wacthAdSuccess"); if (this.isAdCooling()) return; this.videoAdcallBack(true); } /** 显示原生广告 */ public showNativeAd(type = 0, show = true) { if (cc.sys.platform != cc.sys.WECHAT_GAME) { if (cc.sys.os == cc.sys.OS_ANDROID) { // jsb.reflection.callStaticMethod("org/cocos2dx/javascript/config/TTAdManagerHolder", "showVideo", "(I)V", pop); this.adSdk.loadNativeAd(type, show); } else if (cc.sys.os == cc.sys.OS_IOS) { } } else { // WxMgr.getInstance().showRewardAd(pop) } } /** 销毁原生广告 */ public destroyNativeAd() { if (cc.sys.platform != cc.sys.WECHAT_GAME) { if (cc.sys.os == cc.sys.OS_ANDROID) { // jsb.reflection.callStaticMethod("org/cocos2dx/javascript/config/TTAdManagerHolder", "showVideo", "(I)V", pop); this.adSdk.destroyNativeAd(); } else if (cc.sys.os == cc.sys.OS_IOS) { } } else { // WxMgr.getInstance().showRewardAd(pop) } } /** 时评冷却倒计时 */ private _ad_cooling_time: number = 0; /** * 视频是否冷却 * @returns 视频冷却中 */ private isAdCooling(): boolean { if (this._ad_cooling_time > 0) { mk.tip.pop('当前看视频太频繁了,请' + this._ad_cooling_time + '秒后再试'); return true; } this._ad_cooling_time = 5; this.runCooling(); return false; } private runCooling() { this._ad_cooling_time--; if (this._ad_cooling_time > 0) { setTimeout(this.runCooling.bind(this), 1000); } } }