尽管可在模拟器上运行,但Admob广告并未显示在真实设备中

时间:2020-01-25 19:03:41

标签: android admob

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

在创建我的AppId和My AdUnitId之后,模拟器将显示下一级广告并正常工作 但实际设备什么也没显示。真实设备中没有广告查看栏

我的代码如下-

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>

CurrentActivity.java位于onCreate()

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 {...} 这有什么要求,因为即使未添加代码,应用程序仍可正常工作。

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

2 个答案:

答案 0 :(得分: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");
}
});

答案 1 :(得分:0)

1个月后,只有2次广告被加载到我的应用中。我仍然没有分发该应用程序。所有请求和2个负载都显示在我的AdMobs信息中心中。

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

如果其他人也有相同的判断,那么请将此答案转给他们,因为尽管代码完美无缺,每个人都将浪费大量时间来编辑代码。

按照上面的S.Gissel先生的建议,我已经尝试过AdView监听器,错误代码为3,即没有要加载的广告。