本地拖拽网站建设,wordpress 邀请,著名的网络营销案例,做软件的全部步骤项目场景#xff1a;
项目中需要接入 google admob sdk 实现广告商业化 问题描述
在接入Institial ad 时#xff0c;onAdLoaded 成功回调#xff0c;但是onAdFailedToShowFullScreenContent 也回调了错误信息 “Timeout for show call succeed.” InterstitialAd.load(act…项目场景
项目中需要接入 google admob sdk 实现广告商业化 问题描述
在接入Institial ad 时onAdLoaded 成功回调但是onAdFailedToShowFullScreenContent 也回调了错误信息 “Timeout for show call succeed.” InterstitialAd.load(activity,ca-app-pub-3940256099942544/1033173712,AdRequest.Builder().build(),object : InterstitialAdLoadCallback() {override fun onAdLoaded(interstitialAd: InterstitialAd) {super.onAdLoaded(interstitialAd)Log.i(nh_ad, admob interstitial onAdLoaded)// 加载成功interAd interstitialAd// 设置广告事件回调interAd?.fullScreenContentCallback object : FullScreenContentCallback() {override fun onAdImpression() {super.onAdImpression()Log.i(nh_ad, admob interstitial onAdImpression)}override fun onAdShowedFullScreenContent() {super.onAdShowedFullScreenContent()Log.i(nh_ad, admob interstitial onAdShowedFullScreenContent)}override fun onAdClicked() {super.onAdClicked()Log.i(nh_ad, admob interstitial onAdClicked)}override fun onAdDismissedFullScreenContent() {super.onAdDismissedFullScreenContent()Log.i(nh_ad, admob interstitial onAdDismissedFullScreenContent)interAd null}override fun onAdFailedToShowFullScreenContent(adError: AdError) {super.onAdFailedToShowFullScreenContent(adError)Log.e(nh_ad, admob interstitial onAdFailedToShowFullScreenContent error:${adError.message})interAd null}}}override fun onAdFailedToLoad(loadAdError: LoadAdError) {super.onAdFailedToLoad(loadAdError)Log.e(nh_ad, admob interstitial onAdFailedToLoad error:${loadAdError.message})interAd null// 加载失败}})
原因分析
问题困扰很久 使用官网 Demo 可以正常显示结果的网络上搜索不到相关问题。
后来对比了下 官网 Demo 和自己项目的差异不同点在于我项目是在子进程加载和显示广告的
尝试去掉子进程后果然不再报错基本可以确定这个就是和多进程有关。。
但是搜索 Admob sdk 技术文档里面并没有接口是设置支持多进程的。。又陷入了无助中
于是我翻阅了 Admob sdk 的源码看到了用于展示广告的 AdActivity 在 Sdk AndroidManifest 里的声明为 猜想能否在自己App的 AndroidManiest里重新声明这个AdActivity 并且加上支持多进程属性 解决方案
在 App 的 AndroidManifest 里重新声明 Admob 的广告 Activity增加支持多进程属性 android:multiprocess true activityandroid:namecom.google.android.gms.ads.AdActivityandroid:configChangeskeyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSizeandroid:exportedfalseandroid:multiprocesstrueandroid:themeandroid:style/Theme.Translucenttools:ignoreMissingClass /
这个坑困扰了大半天特意记录下