如何解决关闭 Admob 2021 插页式广告后如何重新上传?
我要改用新的 Admob 2021 插页式广告。 New InterstitialAd 我的主要活动有 10 集,无论我切换到哪一集,都会出现一个插页式广告。但是,当我回到活动中时,我注意到它不再显示了。我想做的是关闭插页式广告后重新加载。
公共类 MainActivity 扩展 Activity {
private InterstitialAd mInterstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this,new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {}
});
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712",adRequest,new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
// The mInterstitialAd reference will be null until
// an ad is loaded.
mInterstitialAd = interstitialAd;
Log.i(TAG,"onAdLoaded");
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error
Log.i(TAG,loadAdError.getMessage());
mInterstitialAd = null;
}
});
} }
解决方法
如果您可以使用刀柄,这很简单,只需复制粘贴此代码,它的代码在我的生产应用程序中运行良好
AdmobUtil.kt
@Singleton
class AdmobUtil @Inject constructor(@ApplicationContext private val context: Context) {
companion object {
private const val TEST_INTERSTITIAL_AD_UNIT_ID = "ca-app-pub-3940256099942544/1033173712"
private const val INTERSTITIAL_AD_UNIT_ID = ""
}
private lateinit var interstitialAd: InterstitialAd
init {
MobileAds.initialize(context) {
loadAdmobInterstitialAd()
}
}
private val interstitialAdUnitId = when {
(BuildConfig.DEBUG) -> TEST_INTERSTITIAL_AD_UNIT_ID
else -> INTERSTITIAL_AD_UNIT_ID
}
private fun loadAdmobInterstitialAd() {
interstitialAd = InterstitialAd(context)
interstitialAd.adUnitId = interstitialAdUnitId
interstitialAd.loadAd(AdRequest.Builder().build())
interstitialAd.adListener = object : AdListener() {
override fun onAdClosed() {
super.onAdClosed()
reloadInterstitialAd()
}
override fun onAdFailedToLoad(error: LoadAdError?) {
super.onAdFailedToLoad(error)
}
}
}
fun reloadInterstitialAd() {
if (::interstitialAd.isInitialized) interstitialAd.loadAd(AdRequest.Builder().build())
}
fun showInterstitialAd() {
if (::interstitialAd.isInitialized && interstitialAd.isLoaded) interstitialAd.show()
}
}
MainApplication.kt
@HiltAndroidApp
class MainApplication : Application() {
@Inject
lateinit var admobUtil: AdmobUtil
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
admobUtil.reloadInterstitialAd()
}
}
MainAcitivty.kt
@AndroidEntryPoint
class MainActivity : AppCompatActivity(R.layout.main_activity) {
@Inject
lateinit var admobUtil: AdmobUtil
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
admobUtil.showInterstitialAd()
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。