bla*_*ara 9 android facebook-ads-api facebook-audience-network
我只是想在我的应用程序中管理广告的失败情况。因此,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()
Run Code Online (Sandbox Code Playgroud)
我在文档上没有看到有关此异常的任何描述。NativeAd, NativeAdsManager,InterstitialAd对象适用于上述场景。但 NativeBannerAd 没有。
我怎样才能再次加载广告?
我使用的观众版本是 audience-network-sdk:5.6.1
一旦 FacebookNativeBannerAd失败,那么每次重新加载都需要创建一个新的横幅对象,因为不能再次使用相同的对象,因此您可以创建一个方法来实例化一个新NativeBannerAd对象并加载它。
你一定在想Why not reuse the same object from onError吧?
因为这是一种代码气味。如果出现网络错误(您的用例),add 将继续尝试自行加载(可以添加重试逻辑但仍然存在代码异味),最终会StackOverflowException因递归行为而导致您的应用程序崩溃。
广告实例不是广告管理器。每当您需要“重新加载”原生广告和横幅广告的广告时,您都应该实例化一个新实例。
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |