【问题标题】:Admob ads not showing in the real device although its working on the EmulatorAdmob 广告未在真实设备中显示,尽管它在模拟器上运行
【发布时间】:2022-05-05 21:18:42
【问题描述】:

我遇到了 Admob 问题,它在模拟器和真实设备上测试 AppId 和 AdUnitId 时工作正常。 两台设备都显示“Nice Job”测试广告

在创建我的 AppId 和我的 AdUnitId 后,模拟器会显示下一级广告并正常工作 但真正的设备不显示任何东西。真机没有adview bar

我的代码如下-

build.gradle ModuleApp

依赖{ ...
实施 'com.google.android.gms:play-services-ads:18.3.0' }

AndroidManifest.xml

<application  
      ...         
     <meta-data           android:name="com.google.android.gms.ads.APPLICATION_ID"             
      android:value="@string/xsAdmobMyAppId"/>    
</application>

activity_current.xml

<com.google.android.gms.ads.AdView
    android:id="@+id/adView"

    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"

    app:adSize="BANNER"
    app:adUnitId="@string/xsAdmobMyBannerUnitId">

</com.google.android.gms.ads.AdView>

onCreate() 中的 CurrentActivity.java

MobileAds.initialize(this, new OnInitializationCompleteListener() {
    @Override
    public void onInitializationComplete(InitializationStatus initializationStatus) {
    }
});

AdView mAdView = findViewById(R.id.adView);

AdRequest adRequest = new AdRequest.Builder()
        .build();
mAdView.loadAd(adRequest);

还有一个查询: 在developers.google.com 入门信息中显示添加MobileAds.initialize{...} 这是什么要求,因为即使没有添加代码,应用程序仍然可以运行。

我在网上发现了一些类似的问题,但没有找到/理解正确的解决方案。

【问题讨论】:

  • 您何时在 admob 中创建了广告单元和应用?很多时候需要几个小时才能提供服务。
  • 我认为要使其在真实设备中工作,您需要将您的设备添加为测试设备。查看更多信息developers.google.com/admob/android/…
  • 嗨 VikaS :已经 2 天了,结果还是一样。 ------ 嗨 sinan:我之前尝试过使用测试设备代码,但它不起作用。此外,我正在使用 Android Studio 中的 Build>Generate... 工具创建 apk,所以我相信它就像一个最终发布版本类型,所以它不应该需要添加测试设备 ID,否则我将如何分发应用程序。跨度>

标签: android admob


【解决方案1】:

如果有人偶然发现这个问题,当您使用物理设备时,您需要使用日志中生成的test device id 而不是demo ad unit。根据经验,您不再需要在开发过程中在物理和模拟器上使用演示广告单元。生产广告单元也不会出现在物理设备上的调试版本中,而使用模拟器会自动将其转换为测试广告,因此您不会受到侵犯。

【讨论】:

    【解决方案2】:

    将侦听器添加到您的 AdView 以获取更多信息,了解为什么无法加载广告。

    mAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Code to be executed when an ad finishes loading.
    }
    
    @Override
    public void onAdFailedToLoad(int errorCode) {
        Log.d("mAdView", "onAdFailedToLoad. But why? "+errorCode)
        // Code to be executed when an ad request fails.
    }
    
    @Override
    public void onAdOpened() {
        // Code to be executed when an ad opens an overlay that
        // covers the screen.
    }
    
    @Override
    public void onAdClicked() {
        // Code to be executed when the user clicks on an ad.
    }
    
    @Override
    public void onAdLeftApplication() {
        // Code to be executed when the user has left the app.
    }
    
    @Override
    public void onAdClosed() {
        // Code to be executed when the user is about to return
        // to the app after tapping on an ad.
    }
    });
    

    你应该在你的初始化中添加一些输出。

    MobileAds.initialize(this, new OnInitializationCompleteListener() {
    @Override
    public void onInitializationComplete(InitializationStatus initializationStatus) {
    Log.d("MobileAds", "#onInitializationComplete");
    }
    });
    

    【讨论】:

      【解决方案3】:

      1 个月后,我的应用中仅加载了 2 次广告。我还没有分发应用程序。所有请求和 2 个加载都显示在我的 AdMobs 仪表板中。

      所以现在我建议对我自己的问题进行 2 个回答 1) Google AdMobs 没有要加载的横幅广告。 2) Google AdMobs 不会在新应用上加载广告,它会等待来自多个已安装应用的多个请求开始加载广告。这可能是为了避免任何误用。

      如果其他人也有同样的判断,那么请将此答案参考他们,因为尽管代码非常好,但每个人都会浪费大量时间来编辑代码。

      正如上面 S.Gissel 先生所建议的,我已经尝试过 AdView 监听器,错误代码是 3,即没有广告可加载。

      【讨论】:

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