开始时显示AdMob插页式广告

4

我在我的应用程序中集成了来自Admob的插页式广告,这是Google Play版本。我想在应用程序启动时显示广告,但它不起作用。我有一个代码,在“onPause”,“onResume”等方法中出现广告。是否有任何方法可以在应用程序启动时显示广告,例如在启动应用程序后的2秒内。

这是我的插页式广告代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    StartAppAd.init(this, "110342272", "204516610");

    setContentView(R.layout.activity_start);

    // Create the interstitial.
    interstitial = new InterstitialAd(this);
    interstitial.setAdUnitId("ca-app-pub-2869508995487312/2690564381");

    // Create ad request.
    AdRequest adRequest = new AdRequest.Builder().build();

    // Begin loading your interstitial.
    interstitial.loadAd(adRequest);
           }
    @Override
protected void onPause() {
display();
super.onStart();
}

public void display() {
if (interstitial.isLoaded()) {
interstitial.show();
}
}
3个回答

13
根据Admob的新政策,不允许在应用程序启动和退出时放置插页式广告。如果您违反此政策,您的账户可能会被禁止使用。因此,请避免这样做。请点击以下链接阅读Admob政策以获得更多澄清。 https://support.google.com/admob/answer/6201362?hl=en

对于新手来说,这是非常重要的提示,因为当你在谷歌上搜索时,这个问题通常会首先出现。 - Reda

12

这是我创建的代码,用于在用户打开应用时加载插页式广告:

      InterstitialAd interstitial;

private static final String AD_UNIT_ID = "YOUR_AD_UNIT_ID";
private InterstitialAd interstitialAd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_start);


    interstitialAd = new InterstitialAd(this);

    interstitialAd.setAdUnitId(AD_UNIT_ID);
    AdRequest adRequest = new AdRequest.Builder().build();

    interstitialAd.loadAd(adRequest);

    interstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {

                if (interstitialAd.isLoaded()) {
                    interstitialAd.show();
                }

        }

        @Override
        public void onAdOpened() {


        }

        @Override
        public void onAdFailedToLoad(int errorCode) {

        }
    });

}

太棒了!它像魔法一样运行。 :) 非常感谢你! - user3217774
是的,这帮了我很大忙。不错的解决方案。 - Martin Capodici

0
根据https://support.google.com/admob/answer/6201362?hl=en,只要在展示应用之前加载了应用程序,就可以在应用启动时显示广告。
插入此成员变量private val doOnce = true doOnce将确保当广告加载时仅显示一次广告,因为onAdLoaded是回调失败,这将导致不断的垃圾邮件弹出广告。
mInterstitialAd?.adListener = object : AdListener() {
   override fun onAdClosed() {
      requestNewInterstitial()
   }

   override fun onAdLoaded() {
      super.onAdLoaded()
      if (doneOnce) {
         mInterstitialAd?.show()
         doneOnce = false
       }
   }
}

在配置更改时保存并检索它

override fun onSaveInstanceState(outState: Bundle?, outPersistentState: PersistableBundle?) {
   super.onSaveInstanceState(outState, outPersistentState)
   outState?.putBoolean(DO_ONCE_KEY, doOnce)
}

override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
   super.onRestoreInstanceState(savedInstanceState)
   if (savedInstanceState != null){
       doOnce = savedInstanceState.getBoolean(DO_ONCE_KEY)
   }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接