我正在使用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。
有人可以帮助我调整上面的代码吗?
答案 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()
时,它无法立即显示。
只需在用户输入网页时准备插页式广告。