You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova应用集成AdMob横幅广告不显示问题求助

Cordova AdMob横幅广告不显示的排查与解决办法

嘿,我来帮你排查下横幅广告不显示的问题!作为同样踩过Cordova广告集成坑的开发者,我整理了几个常见的原因和解决办法,你可以一步步验证:

  • 检查广告ID的有效性
    你代码里的安卓Banner ID看起来有问题(比如包含ds这类非数字字符),这肯定会导致广告加载失败。建议先替换成AdMob官方提供的测试广告ID来验证:

    • 安卓测试横幅ID:ca-app-pub-3940256099942544/6300978111
    • iOS测试横幅ID:ca-app-pub-3940256099942544/2934735716
      测试ID不会产生真实收益,但能确保广告正常加载,排除ID配置错误的问题。
  • 确保插件在deviceready后初始化
    Cordova插件必须等设备就绪后才能调用,很多新手会忽略这一点。你需要把initAd()放在deviceready事件监听里,否则会出现admob plugin not ready的提示:

    document.addEventListener("deviceready", function(){
        initAd();
        // 这里可以调用showBannerFunc()显示横幅
        showBannerFunc();
    }, false);
    
  • 添加错误日志排查加载失败原因
    你当前的onFailedToReceiveAd事件处理是空的,无法知道广告加载失败的具体原因。建议添加日志输出,方便定位问题:

    document.addEventListener('onFailedToReceiveAd', function(data){
        console.error('广告加载失败:', data.error, data.reason);
        alert('广告加载失败: ' + data.reason);
    });
    

    通过日志你能看到是ID错误、网络问题还是AdMob政策限制等原因。

  • 重新安装插件确保完整性
    有时候插件安装可能出现异常,建议先卸载再重新安装:

    cordova plugin remove cordova-plugin-admob-simple
    cordova plugin add cordova-plugin-admob-simple
    

    安装完成后重新构建项目:cordova build android(或ios)。

  • 验证权限配置(安卓)
    确保AndroidManifest.xml中包含必要的权限(插件通常会自动添加,但可以手动确认):

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

修改后的完整示例代码

function initAd(){ 
    if ( window.plugins && window.plugins.AdMob ) { 
        var ad_units = { 
            ios : { 
                banner: 'ca-app-pub-3940256099942544/2934735716', // iOS测试ID
                interstitial: 'ca-app-pub-3940256099942544/4411468910' 
            }, 
            android : { 
                banner: 'ca-app-pub-3940256099942544/6300978111', // 安卓测试ID
                interstitial: 'ca-app-pub-3940256099942544/1033173712' 
            } 
        }; 
        var admobid = ( /(android)/i.test(navigator.userAgent) ) ? ad_units.android : ad_units.ios; 

        window.plugins.AdMob.setOptions( { 
            publisherId: admobid.banner, 
            interstitialAdId: admobid.interstitial, 
            adSize: window.plugins.AdMob.AD_SIZE.SMART_BANNER, 
            bannerAtTop: false, 
            overlap: true, 
            offsetTopBar: false, 
            isTesting: true, // 测试模式开启
            autoShow: true 
        }); 

        registerAdEvents(); 
    } else { 
        alert('admob plugin not ready'); 
    } 
}

function registerAdEvents() { 
    document.addEventListener('onReceiveAd', function(){
        console.log('横幅广告加载成功');
    }); 
    document.addEventListener('onFailedToReceiveAd', function(data){
        console.error('横幅广告加载失败:', data.error, data.reason);
        alert('广告加载失败: ' + data.reason);
    }); 
    document.addEventListener('onPresentAd', function(){
        console.log('广告展示');
    }); 
    document.addEventListener('onDismissAd', function(){ 
        console.log('广告关闭');
    }); 
    document.addEventListener('onLeaveToAd', function(){ 
        console.log('离开应用打开广告');
    }); 
    document.addEventListener('onReceiveInterstitialAd', function(){
        console.log('插屏广告加载成功');
    }); 
    document.addEventListener('onPresentInterstitialAd', function(){
        console.log('插屏广告展示');
    }); 
    document.addEventListener('onDismissInterstitialAd', function(){
        console.log('插屏广告关闭');
    }); 
}

function showBannerFunc(){ 
    window.plugins.AdMob.createBannerView();
} 

function showInterstitialFunc(){ 
    window.plugins.AdMob.createInterstitialView(); 
    window.plugins.AdMob.requestInterstitialAd();
}

// 关键:等待设备就绪后初始化
document.addEventListener("deviceready", function(){
    initAd();
    showBannerFunc(); // 初始化后显示横幅
}, false);

内容的提问来源于stack exchange,提问作者Sanjay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:59:46