如何使用普通 Adlistener 调用所有覆盖仅在 Facebook 原生广告上调用 onAdloaded
Posted
技术标签:
【中文标题】如何使用普通 Adlistener 调用所有覆盖仅在 Facebook 原生广告上调用 onAdloaded【英文标题】:How to call only onAdloaded on Facebook Native Ads using normal Adlistener call all override 【发布时间】:2020-12-03 12:49:16 【问题描述】:请帮我想出一种方法来缩短原生广告代码,因为如果我使用多个广告,它会变得非常混乱
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)
这是我现在使用的代码,我该如何缩短它?我应该尝试使用抽象侦听器吗?因为当我尝试使用它时,它不起作用。谁能告诉我我做错了什么?
【问题讨论】:
【参考方案1】:我能理解你的问题。我也有同样的问题。 Facebook sdk 不像 Admob 那样智能/灵活。
在
Facebook-Audience-Network
:你不能像onAdLoaded
那样调用AdListener
的单一方法,如果你调用单一方法然后代码 不行,你必须调用所有方法然后它才能工作。
您可以通过这种方式收缩/缩短代码:
长代码:
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)
谢谢
快乐编码:)
【讨论】:
以上是关于如何使用普通 Adlistener 调用所有覆盖仅在 Facebook 原生广告上调用 onAdloaded的主要内容,如果未能解决你的问题,请参考以下文章