在我的第一个应用程序构建中,我在admob上遇到了一些令人困惑的经历。 Android应用程序是使用phonegap构建的,我试图在游戏过程中两次显示插页式广告。这是一款Jeopardy风格的游戏,所以当它们达到每日双倍时以及当它们达到最终危险时,会弹出一个广告。当我第一次开始工作时,我收到了一堆警报消息,这些消息导致广告被涂黑,但它们至少会弹出。当我对警报进行评论时,一切都运转良好。我后来对应用程序进行了一些更改,我可能不小心改变了我用于广告的一些代码。自此更改后,广告只会在每日双倍标记处弹出一次。我把警报重新放入,看看它被挂起的地方,但是当我发出警报时,它既适用于双重危险,也适用于最后一轮。除了广告像以前一样被涂黑了。经过更多测试后,影响一切的警报是“警告”(我们有一个坐着,应该显示“);”作为showInterstitialAd()的一部分。当评论出广告时,广告只会在每日双倍期间投放,但是当广告处于有效状态时,广告会在每日双轮和最后一轮中播放。
var isPendingInterstitial = false;
var isAutoshowInterstitial = false;
function prepareInterstitialAd() {
//alert("preparing");
if (!isPendingInterstitial) {
//alert("requesting interstitial");
admob.requestInterstitialAd({
autoShowInterstitial: isAutoshowInterstitial
});
}
}
function onAdLoadedEvent(e) {
if (e.adType === admob.AD_TYPE.INTERSTITIAL && !isAutoshowInterstitial) {
isPendingInterstitial = true;
//alert("ad load event");
}
}
function onDeviceReady() {
document.removeEventListener('deviceready', onDeviceReady, false);
//alert("device is ready");
admob.setOptions({
//alert("setting options");
publisherId: "pub-XXXXXXXXXXXXXXXX",
interstitialAdId: "ca-app-pub-XXXXXXXXXXXXXXXXXXXXXXXXXXX",
});
document.addEventListener(admob.events.onAdLoaded, onAdLoadedEvent);
prepareInterstitialAd();
}
document.addEventListener("deviceready", onDeviceReady, false);
function showInterstitialAd() {
//alert("trying to show");
if (isPendingInterstitial) {
admob.showInterstitialAd(function () {
//alert("we've got one sitting, should be shown");
isPendingInterstitial = false;
isAutoshowInterstitial = false;
prepareInterstitialAd();
});
}
else {
//alert("not ready yet, bring it in when ready");
isAutoshowInterstitial = true;
admob.requestInterstitialAd({
autoShowInterstitial: isAutoshowInterstitial
});
}
}
问题不在于调用showInterstitialAd()。它被调用两次,我可以从警报中看出来。也不应该运行任何会在最后一轮中破坏广告的代码。在广告应该显示的时候,程序正在等待用户输入他们的下注。作为测试,我尝试以一分钟的间隔使用setInterval调用showInterstitialAd。这有效,并且多次显示广告。我完全难过了。不幸的是,我不确定如何从中获取任何控制台日志。我在浏览器上测试了这些,但是我无法激活admob代码。
为什么使用setInterval多次调用showInterstitialAd工作,而不是另一种方式?众所周知,另一种方式是两次调用showInterstitialAd。
为什么警报的存在会导致广告弹出,或者为什么它不存在导致广告失败?
任何帮助都会很棒,谢谢!为了更好地衡量,这里是调用showInterstitialAd的代码。
function runQuestion() {
showInterstitialAd();
$('.clickBlock').hide();
$('.doublePageBody').hide();
$('.questionPage').show();
$('.answerInputs').show();
if (finalRound) {
document.getElementById('category').innerHTML = titleCase(finalCategory);
}
if (total <= 500) {
document.getElementById('showQuestion').innerHTML = "Place your wager between $5 and $500.";
}
else {
document.getElementById('showQuestion').innerHTML = "Place your wager between $5 and " + total;
}
document.getElementById('timer').innerHTML = '';
}
编辑我的原始帖子在代码中存在错误,该错误仅存在于此处且不在我的应用代码中。我现在已经删除了。
答案 0 :(得分:0)
问题在于代码的这部分中的prepareInterstitialAd()。
function showInterstitialAd() {
//alert("trying to show");
if (isPendingInterstitial) {
admob.showInterstitialAd(function () {
//alert("we've got one sitting, should be shown");
isPendingInterstitial = false;
isAutoshowInterstitial = false;
prepareInterstitialAd();
});
}
else {
//alert("not ready yet, bring it in when ready");
isAutoshowInterstitial = true;
admob.requestInterstitialAd({
autoShowInterstitial: isAutoshowInterstitial
});
}
当前插页式广告的展示必定影响了下一个插页式节目的准备工作,因为它们大部分时间都在同一时间发生。现在,在用户进入双重危险回合的赌注后,我正在准备下一个插页式广告。我曾使用此link作为原始帖子中我的代码的示例,这是#34; admob phonegap&#34;的第一个google响应。除了上面描述的问题之外,他们还在设备就绪部分拼错了prepareInterstitial函数,但我立即抓住了那部分。但是,只是为了其他任何人。