android - 如何使用普通 Adlistener 调用所有覆盖仅在 Facebook 原生广告上调用 onAdloaded
问题描述
请帮助我想出一种方法来缩短原生广告代码,因为如果我使用多个广告,它会变得非常混乱
try {
fbNativeAd = NativeAd(this@SplashActivity, fbNative)
} catch (e: Exception) {
}
val nativeAdListener: NativeAdListener = object : NativeAdListener {
override fun onMediaDownloaded(ad: Ad) {
// Native ad finished downloading all assets
Log.e(TAG, "Native ad finished downloading all assets.")
}
override fun onError(ad: Ad, adError: AdError) {
// Native ad failed to load
Log.e(TAG, "Native ad failed to load: " + adError.errorMessage)
}
override fun onAdLoaded(ad: Ad) {
// Native ad is loaded and ready to be displayed
Log.d(TAG, "Native ad is loaded and ready to be displayed!")
inflateFbNativeAd(fbNativeAd!!)
}
override fun onAdClicked(ad: Ad) {
// Native ad clicked
Log.d(TAG, "Native ad clicked!")
}
override fun onLoggingImpression(ad: Ad) {
// Native ad impression
Log.d(TAG, "Native ad impression logged!")
}
}
// Request an ad
try {
fbNativeAd!!.loadAd(
fbNativeAd!!.buildLoadAdConfig()
.withAdListener(nativeAdListener)
.withMediaCacheFlag(NativeAdBase.MediaCacheFlag.ALL)
.build())
} catch (e: Exception) {
}
这是我现在正在使用的代码,我该如何缩短它?我应该尝试使用抽象侦听器吗?因为当我尝试使用它时,它不起作用。谁能告诉我我做错了什么?
解决方案
我能理解你的问题。我也有同样的问题。Facebook sdk 不像 Admob 那样智能/灵活。
在
Facebook-Audience-Network
:如果您调用单个方法,则不能调用AdListener
类似的单个方法,onAdLoaded
然后代码将不起作用,您必须调用所有方法才能起作用。
您可以通过这种方式缩小/缩短代码:
长代码:
override fun onMediaDownloaded(ad: Ad) {
// Native ad finished downloading all assets
Log.e(TAG, "Native ad finished downloading all assets.")
}
缩短这个无用的代码(以这种方式):
override fun onMediaDownloaded(ad: Ad) {}
谢谢
快乐编码:)