android-activity - Admob Interstitial 加载但显示空白屏幕

标签 android-activity admob android interstitial

我试图将 Admob Interstitial 添加到我的 Android 应用程序中,当有人离开 Activity 时会显示该应用程序。

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();
}

Interstitial 加载成功但我得到一个像这样的空白屏幕(我等了 1-2 分钟但仍然没有广告显示):

enter image description here

我仔细检查了我的 AD_UNIT_ID。可能是什么问题呢?这是正常的吗?我仍处于开发阶段,当我将我的应用程序上传到 Play 商店时,这个问题会得到纠正吗?

最佳答案

你永远不会让它工作。

在您的 Activity 被销毁时,插页式广告没有上下文。而是在您的应用中找到一个自然的断点,然后显示插页式广告。

关于android-activity - Admob Interstitial 加载但显示空白屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24926263/

相关文章:

android - 如何确保一个 android Activity 仅在 backstack 中驻留一次

java - 向 Activity 发送包数据的 Android 服务为 NULL

java - Android Studio 模拟器不显示测试 ADS

android - 以编程方式创建 Admob 原生广告

java - 如何在 Android 中使用切换按钮停止后台服务?

android - 我正在尝试将共享偏好中的值从一个 Activity 传递到另一个 Activity

android - 从 sqlite 中删除项目后 RecyclerView 不更新?

android - 正确扩展/覆盖库 Activity ,在新项目中有效地替换它?

android - 无法实例化 LocationListener 类型

java - AdMob 覆盖 Recyclerview 列表项