| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- 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);
- }
- }
- }
|