Admob广告在模拟器上可以显示,但在真实设备上无法显示。

4

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

创建我的AppId和我的AdUnitId后,模拟器显示下一级广告并正常工作,但真实设备没有显示任何广告视图栏。

我的代码如下-

build.gradle ModuleApp

dependencies { ...
implementation '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中创建广告单元和应用程序时,通常需要几个小时才能提供服务。 - VikaS GuttE
我认为要让它在真实设备上运行,你需要将你的设备添加为测试设备。请查看以下链接获取更多信息:https://developers.google.com/admob/android/test-ads#enable_test_devices - sinan
嗨VikaS:已经两天了,结果还是一样。嗨sinan:我之前尝试使用测试设备代码,但它没有起作用。另外,我正在使用Android Studio中的Build>Generate...工具创建apk,因此我认为这就像一个最终发布版本类型,所以不需要添加测试设备ID,否则我将如何分发应用程序。 - Sundeep
3个回答

3

如果有人遇到这个问题,当你使用物理设备时,你需要使用日志中生成的测试设备ID而不是演示广告单元。根据经验,在开发过程中,你不再需要在物理设备和模拟器上使用演示广告单元。生产广告单元也不会在物理设备的调试版本中显示出来,而使用模拟器将自动将其转换为测试广告,所以你可以放心使用而不会违反规定。


0

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

现在,我建议自己的问题有以下2个答案: 1)Google AdMobs没有横幅广告可加载。 2)Google AdMobs不会在新应用程序上加载广告,并且它会等待多个已安装应用程序的多个请求才开始加载广告。这可能是为了避免任何滥用。

如果其他人也有同样的判断,请引用此答案,因为每个人都将浪费很多时间来编辑代码,尽管代码完全正确。

如S.Gissel先生所建议的,我已经尝试了AdView侦听器,错误代码为3,即没有广告可加载。


0
将监听器添加到您的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");
}
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接