【问题标题】:Firebase Admob Ads not loading live AdsFirebase Admob 广告未加载实时广告
【发布时间】:2016-05-31 05:21:23
【问题描述】:

我使用 Firebase 添加了 AdMob。它不显示实时广告,测试广告工作正常。如果我添加.addTestDevice("D9XXXXXXXXXXXXXXXXXXXXXXXXXXXXX");",它会显示测试广告。

我正在按照Google Documentation 的步骤进行操作。

项目级别 - build.gradle

 dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'com.google.gms:google-services:3.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

应用级别 - build.gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.google.firebase:firebase-ads:9.0.1'
}

MainActivity.java

AdView mAdView;
AdRequest adRequest;


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  MobileAds.initialize(getApplicationContext(), "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXX");

    mAdView = (AdView) findViewById(R.id.adView);
    adRequest = new AdRequest.Builder().build();

}

activity_main.xml

 <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_id" />

strings.xml

&lt;string name="banner_id"&gt;ca-app-pub-XXXXXXXXXXXX/XXXXXXXXX&lt;/string&gt;

我在 Logcat 中遇到错误

W/Ads:获得广告响应时出现问题。错误代码:0

W/Ads:未能加载广告:0

我还尝试导出应用程序以测试实时广告,但失败了。有很多答案表明,Google 可能没有针对我的应用的广告,但没有任何与此相关的日志显示。

【问题讨论】:

  • 请在您的应用程序中提供正确的banner_ad_unit_id@Arth Tilva
  • 遇到同样的问题,有什么线索吗? @Arth Tilva
  • 在创建新id时,加载应用的广告需要时间,需要等待一段时间,直到google根据应用分配一些广告
  • 至少对我来说这不是问题,几周前我创建了一些广告单元,但广告没有显示在物理设备中,只是模拟器中的测试广告。我还有一个问题:如果我的应用因从 AdMob 投放广告而被禁用(并且我没有电子邮件),我如何知道它是否被禁用? @ArthTilva
  • 嗨@ArthTilva,你解决了这个问题吗?我的应用程序遇到了同样的问题。我收到Failed to load ad: 3 错误。

标签: android firebase admob


【解决方案1】:

在您的代码中进行以下更改

在应用层级末尾添加apply plugin: 'com.google.gms.google-services' build.gradle

应用级别 - build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:2.1.0'
    classpath 'com.google.gms:google-services:3.0.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

apply plugin: 'com.google.gms.google-services'

通过在初始化广告AdRequest 后添加mAdView.loadAd(adRequest);AdRequest 加载到AdView,如下所示:

MainActivity.java

AdView mAdView;
AdRequest adRequest;


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  MobileAds.initialize(getApplicationContext(), "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXX");

    mAdView = (AdView) findViewById(R.id.adView);
    adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);

}

【讨论】:

    【解决方案2】:

    您需要在代码中添加mAdView.loadAd(adRequest);。 您的代码将如下所示:

     AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);//Required this line to load ad
    

    Load the ad in the MainActivity class

    【讨论】:

      【解决方案3】:

      从 ADMOB 帐户添加付款信息并等待批准

      如果测试广告运行良好,那么您的实施是正确的,但您需要填写 admob 帐户中的“付款”选项。填写该表格后,您将收到一封关于确认付款详细信息的电子邮件,以及指示您的信息是否被 admob 团队接受的消息,如果是,那么您的实时广告将出现。 但请记住,前几次广告不会出现。批准后出现也需要时间。 这是错误代码的代码sn-p,以找出问题所在

      mAdView = (com.google.android.gms.ads.AdView) findViewById(R.id.adView);

          mAdView.setAdListener(new com.google.android.gms.ads.AdListener() {
              @Override
              public void onAdLoaded() {
                  // Code to be executed when an ad finishes loading.
                  Toast.makeText(HomeActivity.this, "onAdLoaded", Toast.LENGTH_SHORT).show();
              }
      
              @Override
              public void onAdFailedToLoad(int errorCode) {
                  if(errorCode==AdRequest.ERROR_CODE_INTERNAL_ERROR)
      
                  Toast.makeText(HomeActivity.this, "onAdFailedToLoad", Toast.LENGTH_SHORT).show();
      
                  // Code to be executed when an ad request fails.
              }
      
              @Override
              public void onAdOpened() {
                  Toast.makeText(HomeActivity.this, "onAdOpened", Toast.LENGTH_SHORT).show();
      
      
              }
      
              @Override
              public void onAdLeftApplication() {
                  Toast.makeText(HomeActivity.this, "onAdLeftApplication", Toast.LENGTH_SHORT).show();
      
      
              }
      
              @Override
              public void onAdClosed() {
                  Toast.makeText(HomeActivity.this, "onAdClosed", Toast.LENGTH_SHORT).show();
      
      
      
              }
          })
          AdRequest adRequest = new AdRequest.Builder().build();
          mAdView.loadAd(adRequest);
      

      获取错误代码

      ERROR_CODE_INTERNAL_ERROR - 内部发生了一些事情;例如,从广告服务器收到无效响应。 ERROR_CODE_INVALID_REQUEST - 广告请求无效;例如,广告单元 ID 不正确。 ERROR_CODE_NETWORK_ERROR - 由于网络连接,广告请求失败。 ERROR_CODE_NO_FILL - 广告请求成功,但没有广告。

      如果您收到错误代码 3,那么您会在一段时间后看到广告。

      【讨论】:

        【解决方案4】:

        查看 values 文件夹中的 string.xml。如果你的banner id不是这样 &lt;string name="banner_ad_unit_id"&gt;ca-app-pub-3940256099942544/6300978111&lt;/string&gt; (此 ID ca-app-pub-3940256099942544/6300978111 仅用于测试广告) 然后将其替换为您自己的横幅广告单元 ID。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多