定期展示插页式广告

问题描述

//Inside onCreate()
var adRequest2 = AdRequest.Builder().build()
        InterstitialAd.load(this,"ca-app-pub-myAppId",adRequest2,object : InterstitialAdLoadCallback() {
            override fun onAdFailedToLoad(adError: LoadAdError) {
                Log.d(TAG,adError?.message)
                mInterstitialAd = null
            }
            override fun onAdLoaded(interstitialAd: InterstitialAd) {
                Log.d(TAG,"Ad was loaded.")
                mInterstitialAd = interstitialAd
            }

        })
//Inside onItemSelectedListener of spinner 
 if (counter%3==0){
                    if (mInterstitialAd != null) {
                        mInterstitialAd?.show(this@MainActivity)
                    } else {
                        Log.d("TAG","The interstitial ad wasn't ready yet.")
                    }
                }
 counter++

我有一个应用程序,它根据用户从下拉菜单/微调器中选择的内容显示一些数据。我想为微调器上选择的每 3 个项目显示一个插页式广告。我使用了 google admob 网站上的这段代码。但这只会在第三个选择后显示一次广告。它不会在第 6、第 9 次重新加载……等等。如何重新加载插页式广告?

解决方法

你应该在每次展示时重新加载广告:就像创建一个 loadAd 函数并每次在 onItemSelectListener 中调用它

加载广告功能

fun loadIADS(){
var adRequest = AdRequest.Builder().build()

      InterstitialAd.load(this,"your_ID",adRequest,object : InterstitialAdLoadCallback() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
          Log.d(TAG,adError?.message)
          mInterstitialAd = null
        }

        override fun onAdLoaded(interstitialAd: InterstitialAd) {
          Log.d(TAG,'Ad was loaded.')
          mInterstitialAd = interstitialAd
        }
      })
}

展示广告

fun showIADS(){
if (mInterstitialAd != null) {
  mInterstitialAd?.show(this)
} else {
  Log.d("TAG"," ad wasn't ready ")
}
}

在 Oncreate 中,而不是初始化只是把这个

counter = 0
loadIADS()

在 onItemSelectedListener 就像你一样

if (counter%3==0){
                    showIADS()
                }
loadIADS()
 counter++

我刚刚将我的 java 代码转换为 kotlin 告诉我它是否显示错误