我只是尝试管理我的应用中广告的失败情况。因此,在由于某些原因(例如没有网络)触发onError
之后,我仅调用了loadAd
的NativeBannerAd
方法,如下所示。但应用程式因called more than once
错误而当机。
mFacebookNativeBannerAd = NativeBannerAd(context, id)
val builder = mFacebookNativeBannerAd.buildLoadAdConfig()
builder.withAdListener(object : NativeAdListener {
// ...
// Other callback methods
override fun onError(p0: Ad?, error: AdError?) {
mFacebookNativeBannerAd.loadAd() // --> 'called more than once' exception
}
})
mFacebookNativeBannerAd.loadAd()
我在文档上没有看到有关此异常的任何描述。 NativeAd
,NativeAdsManager
,InterstitialAd
对象适用于上述情况。但是NativeBannerAd没有。
如何重新加载广告?
我正在使用的受众群体版本为audience-network-sdk:5.6.1
一旦Facebook NativeBannerAd
失败,则每次重新加载都需要创建一个新的横幅对象,因为无法再次使用同一对象,因此您可以创建一个实例化新NativeBannerAd
对象并加载它的方法。 >
您必须在想Why not reuse the same object from onError
?
因为这是代码气味。如果发生网络错误(您的用例),添加将继续尝试自行加载(可以添加重试逻辑,但仍然会产生代码味道),由于递归行为,最终将使您的应用程序崩溃并显示为StackOverflowException
。
Documentation reference as POC
广告实例不是广告管理器。你应该每当您需要为本地广告“重新加载”广告时,实例化一个新实例广告和横幅广告。