Admob Interstitial загружается, но показывает пустой экран

Я пытался добавить Admob Interstitial в свое приложение для Android, которое отображается, когда кто-то покидает действие.

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;

public class Banner extends Activity {

/**
 * Your ad unit id, you must replace it with your actual ad unit id Which
 * you can generate from Admob website
 * 
 */
private static final String AD_UNIT_ID = "MY ADD UNIT ID";
private static final String TAG = "ExampleActivity";
private InterstitialAd iAd;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.banner);

    iAd = new InterstitialAd(this);
    iAd.setAdUnitId(AD_UNIT_ID);

    iAd.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            Log.d(TAG, "onAdLoaded");
            Toast.makeText(Banner.this, "Ad loaded successfully",
                    Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onAdFailedToLoad(int errorCode) {
            String errorMessage = String.format("Failed to load add : "
                    + getErrorReason(errorCode));
            Log.d(TAG, errorMessage);
            Toast.makeText(Banner.this, errorMessage,
                    Toast.LENGTH_SHORT).show();
        }
    });

    loadInterstitial();
}

public void loadInterstitial() {
    AdRequest adRequest = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .addTestDevice(
                    "You can add you device id here, run code once and get id from logs")
            .build();

    iAd.loadAd(adRequest);
}

public void showInterstitial() {
    if (iAd.isLoaded()) {
        iAd.show();
    } else {
        Log.d(TAG, "Interstitial ad is not loaded yet");
    }
}

/**
 * Gets a string error reason from an error code
 * 
 * @param errorCode
 * @return
 */
private String getErrorReason(int errorCode) {

    String errorReason = "unknown error";

    switch (errorCode) {
    case AdRequest.ERROR_CODE_INTERNAL_ERROR:
        errorReason = "internal error";
        break;
    case AdRequest.ERROR_CODE_INVALID_REQUEST:
        errorReason = "invalid request";
        break;
    case AdRequest.ERROR_CODE_NETWORK_ERROR:
        errorReason = "network Error";
        break;
    case AdRequest.ERROR_CODE_NO_FILL:
        errorReason = "no fill";
        break;
    }
    return errorReason;
}

@Override
protected void onDestroy() {
    showInterstitial();
    super.onDestroy();
}

}

Межстраничное объявление загружается успешно, но я получаю такой пустой экран (я ждал 1-2 минуты, но реклама все еще не показывается):

введите здесь описание изображения

Я дважды проверил свой AD_UNIT_ID. В чем может быть проблема? Это нормально? Я все еще нахожусь в стадии разработки. Будет ли это исправлено, когда я загружу свое приложение в Play Store?


person Rushil Sablania    schedule 24.07.2014    source источник
comment
поправьте меня, если я ошибаюсь, вы пытаетесь показать рекламу, когда пользователи пытаются выйти из активности. В этом случае вы должны были использовать onBackPressed вместо onDestroy, а super.onBackPressed() следует поместить в AdClosed() в AdListener.   -  person Hendra Anggrian    schedule 08.01.2016


Ответы (2)


Вы никогда не заставите это работать.

В тот момент, когда ваша активность уничтожается, для промежуточного объявления нет контекста. Вместо этого найдите естественную точку останова в своем приложении и покажите промежуточное объявление.

person William    schedule 24.07.2014
comment
вы правы, admob показывает пустую рекламу, когда реклама показывается при закрытии активности, закрытии приложения или запуске приложения. - person Muhammad Hamza Shahid; 09.04.2016

@Rushil, если баннер не является вашей базовой активностью, вы можете запустить баннерную активность, используя метод startActivityForResult(), подобный этому

Intent intent = new Intent(MainActivity.this, Banner.class);
startActivityForResult(intent,0);

Затем покажите рекламу в функции OnActivityResult.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode==0||resultCode==Activity.RESULT_OK)
    {
        if (iAd.isLoaded()) 
        {
         iAd.show();
        }
    }
    super.onActivityResult(requestCode, resultCode, data);

}

Надеюсь это поможет :)

person Muhammad Hamza Shahid    schedule 09.04.2016