【问题标题】:AdMob Real Ads dont showAdMob 真实广告不显示
【发布时间】:2020-11-13 12:21:32
【问题描述】:

我的广告不显示。

我正在开发一个需要广告的应用。目前为了测试,我在 Google Play 控制台的内部测试轨道中有应用程序进行封闭测试。因此,我无法将其链接到 Admob 的 Play 商店中的应用。

因此,为了测试它们,我一直在测试广告单元,特别是插页式和奖励视频广告。它们加载良好。

今天,我决定切换到生产广告,因为我想发布该应用程序。因此,我为奖励广告和插页式广告创建了新的广告单元。将测试广告 ID 单元替换为生产广告单元 ID。我看到“广告加载失败:0”。

我没有使用示例广告单元,而是尝试将我的设备设置为测试设备。我看到了以下日志

I/Ads:此请求是从测试设备发送的。 I/Ads:广告加载失败:0

我不确定问题是什么。我仍在内部测试轨道中。有问题吗?制作广告是否仅在链接到 Google Play 中的应用时才有效?

请让我知道我哪里出错了。请参阅 Admob 广告单元的附件图片

代码如下:

Manifest.xml:

    <meta-data
         android:name="com.google.android.gms.ads.APPLICATION_ID"
         android:value="ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx" />

build.gradle:

    implementation 'com.google.android.gms:play-services-ads:19.2.0'

实施 AdMob:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      //Rest of the code


   MobileAds.initialize(this, new OnInitializationCompleteListener() {
      @Override
      public void onInitializationComplete(InitializationStatus initializationStatus) {
         Log.w(TAG, " initialized mobile ad");
      }
   });

   List<String> testDeviceIds = Arrays.asList("xxxxxxxxxxxxxxxxxxxxxxxxx");
       RequestConfiguration configuration =
       new RequestConfiguration.Builder().setTestDeviceIds(testDeviceIds).build();
       MobileAds.setRequestConfiguration(configuration);

   }

   public void loadInterstitialAd(){
   mInterstitialAd = new InterstitialAd(this);
   this.rewardedAd = new RewardedAd(this, "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx");
   //mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
   mInterstitialAd.loadAd(new AdRequest.Builder().build());


   mInterstitialAd.setAdListener(new AdListener() {
   @Override
   public void onAdLoaded() {
     if (mInterstitialAd.isLoaded()) {
        mInterstitialAd.show();
     } else {
        Log.d("TAG", "The interstitial wasn't loaded yet.");
     }
   }

  @Override
  public void onAdClosed() {
     Log.w(TAG, "Interstitial ad cloed ");
     onInterstitialshowed();
  }
    });
  }


  public void loadRewardedAd(){
   this.rewardedAd = new RewardedAd(this, "ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx");
  //this.rewardedAd = new RewardedAd(this, "ca-app-pub-3940256099942544/5224354917");
  RewardedAdLoadCallback callback = new RewardedAdLoadCallback(){
  @Override
  public void onRewardedAdFailedToLoad(int i) {
     super.onRewardedAdFailedToLoad(i);
  }

  @Override
  public void onRewardedAdLoaded() {
     super.onRewardedAdLoaded();
     showRewardedAd();
  }
  };
  this.rewardedAd.loadAd(new AdRequest.Builder().build(), callback);
  }

     public void showRewardedAd(){
     if(rewardedAd.isLoaded()){
     RewardedAdCallback callback = new RewardedAdCallback() {
     @Override
     public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
        Log.w(TAG, "onUserEarnedReward");
     }

     @Override
     public void onRewardedAdOpened() {
        super.onRewardedAdOpened();
        Log.w(TAG, "OnRewardAdOpened");
     }

     @Override
     public void onRewardedAdClosed() {
        super.onRewardedAdClosed();
        onRewardedAdLoadedOnClick();
     }

     @Override
     public void onRewardedAdFailedToShow(int i) {
        super.onRewardedAdFailedToShow(i);
        Log.w(TAG, "onRewardedAdFailedToShow");
     }
  };
  this.rewardedAd.show(this, callback);
  }else{
  Log.i(TAG, "Ad not loaded");
  }
 }

【问题讨论】:

标签: android admob


【解决方案1】:

我在使用 SDK ANDROID LEVEL 30 时遇到了同样的问题。当我将其更改为 SDK ANDROID LEVEL 29 时,ADS 显示。

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多