Admob 横幅广告不显示

Admob Banner Ads don't display

我没有收到错误,它们只是没有显示。

在我的清单中:

<uses-permission android:name="android.permission.INTERNET" android:maxSdkVersion="28"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission-sdk-23 android:name="android.permission.INTERNET"
    android:maxSdkVersion="28" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_NETWORK_STATE"
    android:maxSdkVersion="28"/>

在我的布局中:

<com.google.android.gms.ads.AdView
    android:id="@+id/publisherAdView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"
    app:adSize="BANNER"
    app:adUnitId="ca-app-pub-??????????????/????????"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

(我用 ? 来隐藏我的广告编号)

在 Activity 我有:

private AdView mPublisherAdView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_play_normal);
    MobileAds.initialize(this, "ca-app-pub-?????????????~???????");

    mPublisherAdView = findViewById(R.id.publisherAdView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mPublisherAdView.loadAd(adRequest);

这是我的 gradle 文件:

buildscript {

repositories {
    google()
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'


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

allprojects {
repositories {
    google()
    jcenter()
    maven {
        url "https://maven.google.com"
    }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

并且:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "???????.?????"
        minSdkVersion 17
        targetSdkVersion 26
        versionCode 1203
        versionName "1.2.03"
        testInstrumentationRunner 
"android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:recyclerview-v7:26.1.0'
//GSON
implementation 'com.google.code.gson:gson:2.8.2'
//RecycleView
implementation 'com.android.support:recyclerview-v7:26.1.0'
//ADS
implementation 'com.google.android.gms:play-services-ads:17.1.1'
}

问题是该应用程序使用互联网,因为我可以看到我消耗了 X 互联网数据,但广告没有显示。我尝试了所有方法,我遵循了 Google 教程并复制了他们网站上的内容,但我无法修复它。我看起来像是在添加负载,因为加载 activity 需要一些时间,而且以前没有这样做,但广告是不可见的或其他东西。我使用 API 26 的智能手机,所以它不是 API 级别。

您必须使用 AdListener

正确构建 addRequest
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .build();
mAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
      if (mAdView.getVisibility() == View.GONE) {
            mAdView.setVisibility(View.VISIBLE);
       }
     }
  });
mAdView.loadAd(adRequest);

Adview 的 XML 是

<LinearLayout
    android:id="@+id/ad_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerInParent="true"
    >
    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ads:adSize="SMART_BANNER"
        android:visibility="gone"
        ads:adUnitId="@string/banner_ad_id">
    </com.google.android.gms.ads.AdView>
</LinearLayout>

最好将 banner id 放在字符串文件中。

问题出在 Admob,由于某种原因我的帐户未通过验证,这就是为什么我认为问题出在代码中,而不是 Admob。

您的帐户可能未获批准。 您可以找出错误的原因:

@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
    super.onAdFailedToLoad(loadAdError);
    Log.d("ERROR",loadAdError.toString());
}

在你知道你的错误后,你可以在这里修复它: https://support.google.com/admob/answer/9905175