У меня есть некоторые запутанные опыты с admob в моей первой сборке приложения. Приложение для Android было создано с телефонной связью, и я пытаюсь дважды отобразить межстраничную рекламу во время игры. Это игра в стиле 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(). Его вызывают дважды, я могу судить по предупреждениям. Также не должно быть запущенного кода, который может нарушить работу рекламы во время финального раунда. В тот момент, когда должна отображаться реклама, программа ожидает от пользователя ввода его ставки. В качестве теста я попытался вызвать showInterstitialAd с setInterval с интервалом в одну минуту. Это работает, и оно показывает рекламу несколько раз. Я совершенно озадачен. К сожалению, я не уверен, как получить какие-либо консольные журналы из этого. Я тестирую их в своем браузере, но не могу с активным кодом admob.
Почему вызов showInterstitialAd будет работать несколько раз с setInterval, а не наоборот? Известно, что второй способ — оба раза вызывать 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 = '';
}
ИЗМЕНИТЬ В моем исходном сообщении была ошибка в коде, которая существовала только здесь и отсутствовала в коде моего приложения. Я удалил это сейчас.