我们如何多次调用NativeBannerAd的loadAd方法?

问题描述 投票:3回答:1

我只是尝试管理我的应用中广告的失败情况。因此,在由于某些原因(例如没有网络)触发onError之后,我仅调用了loadAdNativeBannerAd方法,如下所示。但应用程式因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()

我在文档上没有看到有关此异常的任何描述。 NativeAdNativeAdsManagerInterstitialAd对象适用于上述情况。但是NativeBannerAd没有。

如何重新加载广告?

我正在使用的受众群体版本为audience-network-sdk:5.6.1

android facebook-ads-api facebook-audience-network
1个回答
0
投票

一旦Facebook NativeBannerAd失败,则每次重新加载都需要创建一个新的横幅对象,因为无法再次使用同一对象,因此您可以创建一个实例化新NativeBannerAd对象并加载它的方法。 >

您必须在想Why not reuse the same object from onError

因为这是代码气味。如果发生网络错误(您的用例),添加将继续尝试自行加载(可以添加重试逻辑,但仍然会产生代码味道),由于递归行为,最终将使您的应用程序崩溃并显示为StackOverflowException

Documentation reference as POC

广告实例不是广告管理器。你应该每当您需要为本地广告“重新加载”广告时,实例化一个新实例广告和横幅广告。

© www.soinside.com 2019 - 2024. All rights reserved.