什么应该替换已弃用的 Facebook adView setAdListener 以获得回调?
What should replace deprecated Facebook adView setAdListener to get callbacks?
从 v5.6.0 开始,adView.setAdListener 已弃用。我们现在如何接收 onAdLoaded 和 onError 回调?
您的 class 应该实施 AdListener。
请参阅此 link 以获取详细说明。
https://developers.facebook.com/docs/audience-network/reference/android/com/facebook/ads/adlistener.html/
解决方法:从5.6开始,应该使用loadAd(AdView.AdViewLoadConfig loadAdConfig)
public void loadAd(AdView.AdViewLoadConfig loadAdConfig)
Loads an ad.
This method always returns immediately. The ad is loaded
asynchronously. The control's ad listener will be called when loading
finishes or fails.
Java
AdView adView = new AdView(this, "placementId", new AdSize(width, height));
AdListener adListener = new AdListener() {
@Override
public void onError(Ad ad, AdError adError) {
}
@Override
public void onAdLoaded(Ad ad) {
}
@Override
public void onAdClicked(Ad ad) {
}
@Override
public void onLoggingImpression(Ad ad) {
}
};
AdView.AdViewLoadConfig loadAdConfig = adView.buildLoadAdConfig()
.withAdListener(adListener)
.build();
adView.loadAd(loadAdConfig);
Kotlin
val adView = AdView(this, "placementId", AdSize(width, height))
val adListener = object : AdListener {
override fun onError(ad: Ad, adError: AdError) {
}
override fun onAdLoaded(ad: Ad) {
}
override fun onAdClicked(ad: Ad) {
}
override fun onLoggingImpression(ad: Ad) {
}
}
val loadAdConfig = adView.buildLoadAdConfig()
.withAdListener(adListener)
.build()
adView.loadAd(loadAdConfig)
查找更多信息here。
val interstitialAdFb = com.facebook.ads.InterstitialAd(this, resources.getString(R.string.fb_interstitial_id))
val adListener = object : com.facebook.ads.InterstitialAdListener {
override fun onLoggingImpression(p0: Ad?) {
TODO("Not yet implemented")
}
override fun onInterstitialDisplayed(p0: Ad?) {
TODO("Not yet implemented")
}
override fun onAdClicked(p0: Ad?) {
TODO("Not yet implemented")
}
override fun onInterstitialDismissed(p0: Ad?) {
}
override fun onError(p0: Ad?, p1: AdError?) {
}
override fun onAdLoaded(p0: Ad?) {
}
}
val loadAdConfig = interstitialAdFb.buildLoadAdConfig()
.withAdListener(adListener)
.build()
interstitialAdFb.loadAd(loadAdConfig)
//and when you want to show ad
if (interstitialAdFb.isAdLoaded)
interstitialAdFb.show()
横幅广告代码:解决已弃用的 setAdListener 方法问题
使用以下代码替换横幅广告的 setAdlistener() 方法:
AdView adView = new AdView(context, context.getString(R.string.str_facebook_banner), AdSize.BANNER_HEIGHT_90);
AdListener adListener = new AdListener() {
@Override
public void onError(Ad ad, AdError adError) {
Log.e(TAG, "Fb failed :: " + adError.toString());
}
@Override
public void onAdLoaded(Ad ad) {
Log.e(TAG, "onAdLoaded: ");
}
@Override
public void onAdClicked(Ad ad) {
}
@Override
public void onLoggingImpression(Ad ad) {
}
};
AdView.AdViewLoadConfig loadAdConfig = adView.buildLoadAdConfig()
.withAdListener(adListener)
.build();
adView.loadAd(loadAdConfig);
插页式广告代码:解决已弃用的 setAdListener 方法问题
您可以使用以下代码替换插页式广告的 setAdListener() 方法:
InterstitialAd interstitialAd = new InterstitialAd(context, context.getString(R.string.str_facebook_interstitial));
InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
@Override
public void onInterstitialDisplayed(Ad ad) {
}
@Override
public void onInterstitialDismissed(Ad ad) {
}
@Override
public void onError(Ad ad, AdError adError) {
Log.e(TAG, "Fb failed :: " + adError.toString());
}
@Override
public void onAdLoaded(Ad ad) {
Log.e(TAG, "onAdLoaded: ");
interstitialAd.show();
}
@Override
public void onAdClicked(Ad ad) {
}
@Override
public void onLoggingImpression(Ad ad) {
}
};
interstitialAd.loadAd(interstitialAd.buildLoadAdConfig()
.withAdListener(interstitialAdListener)
.withCacheFlags(ALL)
.build());
}
官方参考Link: https://developers.facebook.com/docs/audience-network/changelog-android#5_6_0
按照从此处更新的最新指南进行操作:
https://developers.facebook.com/docs/audience-network/support/troubleshoot/integration
例如:
NativeAdListener nativeAdListener = new NativeAdListener() {
@Override
public void onMediaDownloaded(Ad ad) {
// Native ad finished downloading all assets
Log.e(TAG, "Native ad finished downloading all assets.");
}
@Override
public void onError(Ad ad, AdError adError) {
// Native ad failed to load
Log.e(TAG, "Native ad failed to load: " + adError.getErrorMessage());
}
@Override
public void onAdLoaded(Ad ad) {
// Native ad is loaded and ready to be displayed
Log.d(TAG, "Native ad is loaded and ready to be displayed!");
}
@Override
public void onAdClicked(Ad ad) {
// Native ad clicked
Log.d(TAG, "Native ad clicked!");
}
@Override
public void onLoggingImpression(Ad ad) {
// Native ad impression
Log.d(TAG, "Native ad impression logged!");
}
};
// Request an ad
nativeAd.loadAd(
nativeAd.buildLoadAdConfig()
.withAdListener(nativeAdListener)
.build());
从 v5.6.0 开始,adView.setAdListener 已弃用。我们现在如何接收 onAdLoaded 和 onError 回调?
您的 class 应该实施 AdListener。 请参阅此 link 以获取详细说明。 https://developers.facebook.com/docs/audience-network/reference/android/com/facebook/ads/adlistener.html/
解决方法:从5.6开始,应该使用loadAd(AdView.AdViewLoadConfig loadAdConfig)
public void loadAd(AdView.AdViewLoadConfig loadAdConfig)
Loads an ad.
This method always returns immediately. The ad is loaded asynchronously. The control's ad listener will be called when loading finishes or fails.
Java
AdView adView = new AdView(this, "placementId", new AdSize(width, height));
AdListener adListener = new AdListener() {
@Override
public void onError(Ad ad, AdError adError) {
}
@Override
public void onAdLoaded(Ad ad) {
}
@Override
public void onAdClicked(Ad ad) {
}
@Override
public void onLoggingImpression(Ad ad) {
}
};
AdView.AdViewLoadConfig loadAdConfig = adView.buildLoadAdConfig()
.withAdListener(adListener)
.build();
adView.loadAd(loadAdConfig);
Kotlin
val adView = AdView(this, "placementId", AdSize(width, height))
val adListener = object : AdListener {
override fun onError(ad: Ad, adError: AdError) {
}
override fun onAdLoaded(ad: Ad) {
}
override fun onAdClicked(ad: Ad) {
}
override fun onLoggingImpression(ad: Ad) {
}
}
val loadAdConfig = adView.buildLoadAdConfig()
.withAdListener(adListener)
.build()
adView.loadAd(loadAdConfig)
查找更多信息here。
val interstitialAdFb = com.facebook.ads.InterstitialAd(this, resources.getString(R.string.fb_interstitial_id))
val adListener = object : com.facebook.ads.InterstitialAdListener {
override fun onLoggingImpression(p0: Ad?) {
TODO("Not yet implemented")
}
override fun onInterstitialDisplayed(p0: Ad?) {
TODO("Not yet implemented")
}
override fun onAdClicked(p0: Ad?) {
TODO("Not yet implemented")
}
override fun onInterstitialDismissed(p0: Ad?) {
}
override fun onError(p0: Ad?, p1: AdError?) {
}
override fun onAdLoaded(p0: Ad?) {
}
}
val loadAdConfig = interstitialAdFb.buildLoadAdConfig()
.withAdListener(adListener)
.build()
interstitialAdFb.loadAd(loadAdConfig)
//and when you want to show ad
if (interstitialAdFb.isAdLoaded)
interstitialAdFb.show()
横幅广告代码:解决已弃用的 setAdListener 方法问题
使用以下代码替换横幅广告的 setAdlistener() 方法:
AdView adView = new AdView(context, context.getString(R.string.str_facebook_banner), AdSize.BANNER_HEIGHT_90);
AdListener adListener = new AdListener() {
@Override
public void onError(Ad ad, AdError adError) {
Log.e(TAG, "Fb failed :: " + adError.toString());
}
@Override
public void onAdLoaded(Ad ad) {
Log.e(TAG, "onAdLoaded: ");
}
@Override
public void onAdClicked(Ad ad) {
}
@Override
public void onLoggingImpression(Ad ad) {
}
};
AdView.AdViewLoadConfig loadAdConfig = adView.buildLoadAdConfig()
.withAdListener(adListener)
.build();
adView.loadAd(loadAdConfig);
插页式广告代码:解决已弃用的 setAdListener 方法问题
您可以使用以下代码替换插页式广告的 setAdListener() 方法:
InterstitialAd interstitialAd = new InterstitialAd(context, context.getString(R.string.str_facebook_interstitial));
InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
@Override
public void onInterstitialDisplayed(Ad ad) {
}
@Override
public void onInterstitialDismissed(Ad ad) {
}
@Override
public void onError(Ad ad, AdError adError) {
Log.e(TAG, "Fb failed :: " + adError.toString());
}
@Override
public void onAdLoaded(Ad ad) {
Log.e(TAG, "onAdLoaded: ");
interstitialAd.show();
}
@Override
public void onAdClicked(Ad ad) {
}
@Override
public void onLoggingImpression(Ad ad) {
}
};
interstitialAd.loadAd(interstitialAd.buildLoadAdConfig()
.withAdListener(interstitialAdListener)
.withCacheFlags(ALL)
.build());
}
官方参考Link: https://developers.facebook.com/docs/audience-network/changelog-android#5_6_0
按照从此处更新的最新指南进行操作: https://developers.facebook.com/docs/audience-network/support/troubleshoot/integration
例如:
NativeAdListener nativeAdListener = new NativeAdListener() {
@Override
public void onMediaDownloaded(Ad ad) {
// Native ad finished downloading all assets
Log.e(TAG, "Native ad finished downloading all assets.");
}
@Override
public void onError(Ad ad, AdError adError) {
// Native ad failed to load
Log.e(TAG, "Native ad failed to load: " + adError.getErrorMessage());
}
@Override
public void onAdLoaded(Ad ad) {
// Native ad is loaded and ready to be displayed
Log.d(TAG, "Native ad is loaded and ready to be displayed!");
}
@Override
public void onAdClicked(Ad ad) {
// Native ad clicked
Log.d(TAG, "Native ad clicked!");
}
@Override
public void onLoggingImpression(Ad ad) {
// Native ad impression
Log.d(TAG, "Native ad impression logged!");
}
};
// Request an ad
nativeAd.loadAd(
nativeAd.buildLoadAdConfig()
.withAdListener(nativeAdListener)
.build());