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

如何在同一应用中添加两个不同AdMob应用ID?及横幅广告不显示排查

同一应用接入多AdMob应用ID+横幅广告不显示的解决方案

一、怎么在一个应用里用多个AdMob应用ID

首先得明确个关键点:AdMob的应用ID是和你的应用包名绑定的——每个AdMob账户里,同一个包名会对应一个专属的应用ID。如果你的App要拉取多个AdMob账户的广告,按下面的步骤来就行:

  • 先在每个目标AdMob账户里,都注册你的应用包名,拿到对应的应用ID(格式都是ca-app-pub-xxx~xxx这种)。
  • 初始化AdMob SDK的时候,其实全局只需要初始化一次就行,用任意一个账户的应用ID都可以——因为广告单元ID本身已经和所属账户绑定了,只要单元ID有效、包名匹配,就能正常加载。
  • 要是你需要更精细的控制(比如给不同账户的广告单独配置参数),可以创建多个AdRequestConfiguration实例,加载对应广告的时候指定就行:
// 配置第一个账户的应用ID
AdRequestConfiguration config1 = new AdRequestConfiguration.Builder()
    .setApplicationId("ca-app-pub-xxx~xxx")
    .build();
// 配置第二个账户的应用ID
AdRequestConfiguration config2 = new AdRequestConfiguration.Builder()
    .setApplicationId("ca-app-pub-yyy~yyy")
    .build();

// 加载第一个账户的广告时用config1
AdRequest adRequest1 = new AdRequest.Builder()
    .setAdRequestConfiguration(config1)
    .build();
bannerAdView.loadAd(adRequest1);

// 加载第二个账户的广告时用config2
AdRequest adRequest2 = new AdRequest.Builder()
    .setAdRequestConfiguration(config2)
    .build();
anotherBannerAdView.loadAd(adRequest2);

二、你的横幅广告看不到的原因&修复方法

看了你的代码,有几个很明显的问题,咱们一个个说:

1. 广告初始化代码根本没执行!

你写了setUpAds()方法,但在onCreate()里完全没调用它啊!代码都没跑,肯定不会加载广告。赶紧在onCreate()里加一行调用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    // 加上这行,让广告代码跑起来
    setUpAds();
}

2. 创建了AdView但没加到布局里

你只是new了一个AdView对象,设置了参数,但没把它添加到Activity的布局容器里!视图没被渲染到界面上,自然看不到。得先在你的activity_home.xml里加个容器(比如LinearLayout),然后把AdView加进去:

先改布局文件activity_home.xml,加个容器:

<LinearLayout
    android:id="@+id/ad_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical"/>

然后修改setUpAds()方法,把AdView添加到容器:

private void setUpAds(){
    MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
    AdView bannerAdView = new AdView(this);
    
    // 这里注意!你之前写的BANER_ID_2少了个N,改成BANNER_ID_2
    int idSelection = random.nextInt(2); 
    if (idSelection == 0) {
        adId = BANNER_ID_1;
    } else {
        adId = BANNER_ID_2; // 修复拼写错误!
    }
    
    // 加权分布的逻辑如果要用也没问题,记得同样改拼写
    // idSelection = random.nextInt(10);
    // if (idSelection < 8) {
    //     adId = BANNER_ID_1;
    // } else {
    //     adId = BANNER_ID_2;
    // }
    
    bannerAdView.setAdUnitId(adId);
    bannerAdView.setAdSize(AdSize.BANNER);
    
    // 找到布局里的容器,把AdView加进去
    LinearLayout adContainer = findViewById(R.id.ad_container);
    adContainer.addView(bannerAdView, new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT
    ));
    
    AdRequest adRequest6 = new AdRequest.Builder().addTestDevice("E4D1201527AD69E0FD7A0551277A5232").build();
    bannerAdView.loadAd(adRequest6);
}

3. 变量拼写错误

刚才也提了,你代码里的BANER_ID_2少了个字母N,改成BANNER_ID_2,不然要么编译报错,要么拿到无效的广告单元ID,广告肯定加载失败。

4. 额外建议:加个加载监听排错

可以给AdView加个AdListener,这样能知道广告到底是加载成功还是失败,失败的话还能看具体原因:

bannerAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        Log.d("AdMob", "横幅广告加载成功啦");
    }

    @Override
    public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        Log.e("AdMob", "横幅广告加载失败:" + loadAdError.getMessage());
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:03:31