如何多次调用NativeBannerAd的loadAd方法?
How Do We Call loadAd Method of NativeBannerAd More Than Once?
我只是想管理我的应用中广告的失败场景。因此,在 onError
由于某种原因(例如没有网络)触发后,我只是调用了 NativeBannerAd
的 loadAd
方法,如下所示。但是应用程序因 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
?
因为这是一种代码味道。如果出现网络错误(您的用例),添加将继续尝试自行加载它(可以添加重试逻辑但仍然有代码味道)并最终会由于递归行为导致您的应用程序崩溃 WhosebugException
。
Documentation reference as POC
Ad Instance is not an ad manager. You are supposed to
instantiate a new instance whenever you need "reload" an ad for native
ads and banner ads.
我只是想管理我的应用中广告的失败场景。因此,在 onError
由于某种原因(例如没有网络)触发后,我只是调用了 NativeBannerAd
的 loadAd
方法,如下所示。但是应用程序因 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
?
因为这是一种代码味道。如果出现网络错误(您的用例),添加将继续尝试自行加载它(可以添加重试逻辑但仍然有代码味道)并最终会由于递归行为导致您的应用程序崩溃 WhosebugException
。
Documentation reference as POC
Ad Instance is not an ad manager. You are supposed to instantiate a new instance whenever you need "reload" an ad for native ads and banner ads.