AdMob插件 - 如何实现插页式首页然后是Html页面

时间:2016-08-25 07:33:59

标签: javascript interstitial cordova-admob phonegap-admob

我正在使用floatinghotpot AdMobpro插件开发一个Cordova应用程序。 该应用程序具有以下代码:

的index.html

<a href=“mainpage.html" id="btn_prepare" class="pure-button pure-button-primary">GO TO APP</a>

在admobshow.js中,我有这些片段:

$('#btn_prepare').click(function(){
  AdMob.prepareInterstitial({
    adId:admobid.interstitial,    

  });

         AdMob.showInterstitial();
       window.open($(this).attr('href'));
});

(代码取自此处:https://github.com/floatinghotpot/cordova-admob-pro/blob/master/test/index.html

我希望这种情况发生: 1.)用户点击Go To APP,插件显示非页内广告。 2.)当用户解散插页式广告时,应打开mainpage.html。

但是,现在发生的事情是: 1.)首先打开mainpage.html,然后在几秒钟内显示插页式广告。

我希望仅在显示插页式广告后才能显示mainpage.html。 (或者对插页式广告执行操作时。)我不希望自动显示mainpage.html。

有人可以帮助我调整上面的代码吗?

2 个答案:

答案 0 :(得分:2)

请参阅此问题中的回复,了解有关如何实施的一些代码和想法: https://stackoverflow.com/a/31187541/4025963

修改

假设cordova-admob插件,基本上这个想法可能就是这个:

<a onclick="showInterstitial()" id="btn_prepare" class="pure-button pure-button-primary">GO TO APP</a>

在你的js代码中:

var isAppForeground = true;
var isShowMainOnCloseAd = false;
var isMainAlreadyShown = false;
var isInterstitialAvailable = false;    

function showInterstitial() {
  if (isInterstitialAvailable) {
    admob.showInterstitialAd();
  } else {
    showMain(function () {
      isMainAlreadyShown = true;
    });
  }
}

function initAds() {
  if (admob) {
    var adPublisherIds = {
      ios : {
        banner : "ca-app-pub-XXXXXXXXXXXXXXXX/BBBBBBBBBB",
        interstitial : "ca-app-pub-XXXXXXXXXXXXXXXX/IIIIIIIIII"
      },
      android : {
        banner : "ca-app-pub-XXXXXXXXXXXXXXXX/BBBBBBBBBB",
        interstitial : "ca-app-pub-XXXXXXXXXXXXXXXX/IIIIIIIIII"
      }
    };

    var admobid = (/(android)/i.test(navigator.userAgent)) ? adPublisherIds.android : adPublisherIds.ios;

    admob.setOptions({
      publisherId:          admobid.banner,
      interstitialAdId:     admobid.interstitial,
      autoShowInterstitial: false
    });

    registerAdEvents();

  } else {
    alert('cordova-admob plugin not ready');
  }
}

function onAdLoaded(e) {
  if (isAppForeground) {
    if (e.adType === admob.AD_TYPE.INTERSTITIAL) {
      isInterstitialAvailable = true;
    }
  }
}

function onAdOpened(e) {
  if (e.adType === admob.AD_TYPE.INTERSTITIAL && !isMainAlreadyShown) {
    isShowMainOnCloseAd = true;
  }
}

function onAdClosed(e) {
  if (e.adType === admob.AD_TYPE.INTERSTITIAL && isShowMainOnCloseAd) {
    isShowMainOnCloseAd = false;
    if (!isMainAlreadyShown) {
      showMain(function () {
        isMainAlreadyShown = true;
      });
    }
  }
}

function onPause() {
  if (isAppForeground) {
    isAppForeground = false;
  }
}

function onResume() {
  if (!isAppForeground) {
    setTimeout(admob.requestInterstitialAd, 1);
    isAppForeground = true;
  }
}

function registerAdEvents() {
  document.addEventListener(admob.events.onAdLoaded, onAdLoaded);
  document.addEventListener(admob.events.onAdOpened, onAdOpened);
  document.addEventListener(admob.events.onAdClosed, onAdClosed);

  document.addEventListener("pause", onPause, false);
  document.addEventListener("resume", onResume, false);
}

function onDeviceReady() {
  document.removeEventListener('deviceready', onDeviceReady, false);
  initAds();

  // request an interstitial
  admob.requestInterstitialAd();
}

document.addEventListener("deviceready", onDeviceReady, false);

答案 1 :(得分:1)

您需要在用户点击该按钮之前的某个时间准备好调用插页式广告AdMob.prepareInterstitial的代码。该插件需要一些时间来准备它,因此当您拨打AdMob.showInterstitial()时,它无法立即显示。

只需在用户输入网页时准备插页式广告。