影响是否弹出admob广告的提示消息?

时间:2017-05-15 10:21:16

标签: javascript xml admob phonegap

在我的第一个应用程序构建中,我在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 = '';
}

编辑我的原始帖子在代码中存在错误,该错误仅存在于此处且不在我的应用代码中。我现在已经删除了。

1 个答案:

答案 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函数,但我立即抓住了那部分。但是,只是为了其他任何人。