如何使用普通 Adlistener 调用全部覆盖仅调用 Facebook 原生广告上的 onAdloaded

How to call only onAdloaded on Facebook Native Ads using normal Adlistener call all override

请帮我想出一种可以缩短原生广告代码的方法,因为如果我使用多个广告,它会变得非常混乱

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 不同smart/flexible。

In Facebook-Audience-Network: You can not call single method of AdListener like onAdLoaded if you call single method then code will not work, You must be call all methods then it works.

您可以shrink/short这样编码:

长代码:

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) {}

谢谢

快乐编码:)