Реклама Interstial не отображается при нажатии кнопки назад - PullRequest
0 голосов
/ 02 мая 2018

Привет всем, я хочу показать промежуточную рекламу, когда пользователь нажимает кнопку "Назад" это мой код в activity.xml:

 <com.google.android.gms.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxx">
    </com.google.android.gms.ads.AdView>

и в классе activity.java:

@Override
public void onBackPressed()
{
    InterstitialAd mInterstitialAd;
    MobileAds.initialize(this, "ca-app-pub-xxxxxxxxxxxxxxxxxxx");
    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxxxxxxxx");
    if (mInterstitialAd.isLoaded()) {
        mInterstitialAd.show();
        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                super.onAdClosed();
                finish();
            }
        });
    }else{
        super.onBackPressed();
    }

}

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Вы должны инициализировать admob внутри onCreate, а затем сначала загрузить add, вызвать метод mInterstitialAd.loadAd(new AdRequest.Builder().build()); после установки addunit Id
Вам также не нужно добавлять AdView внутри xml, если вы хотите показывать только промежуточную рекламу

0 голосов
/ 02 мая 2018

Изменение onCreate():

InterstitialAd mInterstitialAd;
    MobileAds.initialize(this, "ca-app-pub-xxxxxxxxxxxxxxxxxxx");
    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxxxxxxxx");
mInterstitialAd.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdFailedToLoad(int errorCode) {
        // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdOpened() {
        // Code to be executed when the ad is displayed.
    }

    @Override
    public void onAdLeftApplication() {
        // Code to be executed when the user has left the app.
    }

    @Override
    public void onAdClosed() {
        // Code to be executed when when the interstitial ad is closed.
        finish();
    }
});
    mInterstitialAd.loadAd(new AdRequest.Builder().build());

измените свой код в соответствии с моим предложением в onBackPressed():

if (mInterstitialAd.isLoaded()) {
    mInterstitialAd.show();

}else{
    super.onBackPressed();
}

и InterstitialAd не требуется представление XML, поэтому удалите это

0 голосов
/ 02 мая 2018

Как я вижу, вы инициализируете и загружаете рекламу методом onBackPressed(). Таким образом, каждый раз, когда он не загружается мгновенно. Итак, инициализируйте и загрузите ваше объявление в onCreate() и в onBackPressed() проверьте, загружено ли объявление, затем покажите ваше объявление.

Внутри onCreate() сделать так:

protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    ...
    InterstitialAd mInterstitialAd;
    MobileAds.initialize(this, "ca-app-pub-xxxxxxxxxxxxxxxxxxx");
    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxxxxxxxx");
    mInterstitialAd.loadAd(new AdRequest.Builder().build());
}

и внутри onBackPressed() сделать так:

if (mInterstitialAd.isLoaded()) {
        mInterstitialAd.show();
        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                super.onAdClosed();
                finish();
            }
        });
    }else{
        super.onBackPressed();
    }

Кроме того, для промежуточной рекламы не требуется элемент xml, поэтому удалите AdView из xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...