影响 admob 广告是否弹出的警报消息?

alert messages impacting whether or not admob ads pop up?

我在第一次构建应用程序时遇到了一些令人困惑的 admob 体验。 android 应用程序是使用 phonegap 构建的,我试图在玩游戏期间两次显示插页式广告。这是一款 Jeopardy 风格的游戏,因此当他们达到每日双倍和到达最终危险时会弹出广告。当我第一次让它工作时,我收到了一堆警告消息 运行,这些消息导致广告被屏蔽,但至少它们会弹出。当我将警报注释掉时,一切正常。后来我对应用程序做了一些更改,我可能不小心更改了我用于广告的一些代码。自那次更改以来,该广告仅在每日双倍标记时弹出一次。我把警报放回去看看它挂在哪里,但是当我把警报放回去时,它对双重危险和最后一轮都有效。除了广告像以前一样被涂黑了。经过更多测试后,影响一切的警报是"alert("我们已经坐下了,应该显示");"作为 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 代码。

为什么调用 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  and 0.";
    }
    else {
        document.getElementById('showQuestion').innerHTML = "Place your wager between  and " + total;
    }
    document.getElementById('timer').innerHTML = '';
}

编辑 我原来的 post 在代码中有一个错误,只存在于此处,而不是在我的应用程序代码中。我现在已经删除了它。

问题出在这部分代码中的 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
    });
}

当前插页式广告的显示一定影响了下一个插页式广告的准备,因为它们在大多数情况下是同时发生的。现在,我正在准备在用户输入他们对双重危险回合的赌注后的下一个插页式广告。我在原始 post 中使用此 link 作为我的代码示例,这是对 "admob phonegap" 的第一个 google 响应。除了上述问题之外,他们还在设备就绪部分拼错了 prepareInterstitial 函数,但我马上就抓住了那部分。不过,请提醒其他人。