Facebook 原生广告未显示,错误“1011 - 显示格式不匹配”
Posted
技术标签:
【中文标题】Facebook 原生广告未显示,错误“1011 - 显示格式不匹配”【英文标题】:Facebook Native Ads not showing, error "1011 - Display Format Mismatch" 【发布时间】:2019-08-27 09:40:00 【问题描述】:我想实施 Facebook Audience Network“原生广告”,并将它们显示在 RecyclerView 中的每个列表中的第 N 个位置。 我已经在同一个应用程序中运行了常规横幅,并且没有任何问题。但是,原生广告无法加载,我只是得到一个没有内容的空白矩形。
当我检查日志文件时,我可以看到我一直在 nativeAd.setAdListener(new NativeAdListener()) 的“onError”中结束...收到此错误消息:
广告请求中的显示格式与显示不匹配 为此展示位置指定的格式。每个展示位置只能使用 具有单一的显示格式。您可以在 为了使用多种显示格式。
我的布局 XML 如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/outer_layout"
android:layout_
android:layout_
android:background="@color/blue"
android:orientation="vertical"
android:padding="@dimen/outer_padding_listview_item">
<com.facebook.ads.NativeAdLayout
android:id="@+id/native_ad_container"
android:layout_
android:layout_
android:layout_gravity="center"
android:background="@color/white"
android:orientation="vertical" />
FacebookNativeAdListViewItemHolder.java
public class FacebookNativeAdListViewItemHolder extends RecyclerView.ViewHolder
private static final String TAG = FacebookNativeAdListViewItemHolder.class.getSimpleName();
private final NativeAd nativeAd;
public View view;
private Context context;
@BindView(R.id.outer_layout)
LinearLayout outerLayout;
@BindView(R.id.native_ad_container)
NativeAdLayout nativeAdContainer;
public FacebookNativeAdListViewItemHolder(View view, Context context)
super(view);
ButterKnife.bind(this, view);
this.view = view;
this.context = context;
nativeAd = new NativeAd(context, Konstanten.FACEBOOK_AUDIENCE_NETWORK_NATIVE_AD_IN_RECYCLER_VIEW);
nativeAd.setAdListener(new NativeAdListener()
@Override
public void onError(Ad ad, AdError adError)
Log.d(TAG, "onError(): " + adError.getErrorMessage());
@Override
public void onAdLoaded(Ad ad)
Log.d(TAG, "FacebookNativeAdListViewItemHolder onAdLoaded()");
// Render the Native Ad Template
View adView = NativeAdView.render(context, nativeAd);
// Add the Native Ad View to your ad container.
// The recommended dimensions for the ad container are:
// Width: 280dp - 500dp
// Height: 250dp - 500dp
// The template, however, will adapt to the supplied dimensions.
nativeAdContainer.addView(adView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 800));
@Override
public void onAdClicked(Ad ad)
Log.d(TAG, "FacebookNativeAdListViewItemHolder onAdClicked()");
@Override
public void onLoggingImpression(Ad ad)
Log.d(TAG, "FacebookNativeAdListViewItemHolder onLoggingImpression()");
@Override
public void onMediaDownloaded(Ad ad)
Log.d(TAG, "FacebookNativeAdListViewItemHolder onMediaDownloaded()");
);
// Initiate a request to load an ad.
nativeAd.loadAd();
一切正常,我可以在回收站视图中看到应该显示原生广告的矩形。但问题是它只是保持白色,没有显示任何内容(见截图)。
【问题讨论】:
【参考方案1】:您需要添加测试设备才能展示广告
-
从导航菜单转到您的Monetization Manager,选择集成 --> 测试
启用测试并勾选“使用真实的广告客户内容”
现在通过在“设置->Google 帐户->广告”中添加“Google 广告客户 ID”来添加您的测试设备
Click here了解更多信息
【讨论】:
已经尝试过测试选项,不幸的是它并没有改变任何问题。【参考方案2】:最终我找到了问题所在。问题是广告格式错误(矩形而不是 natvie-ad),因此无法在原生广告容器中显示广告。
【讨论】:
以上是关于Facebook 原生广告未显示,错误“1011 - 显示格式不匹配”的主要内容,如果未能解决你的问题,请参考以下文章
在 ListView 中显示重复布局的 Facebook 原生横幅广告
GridView 中的 Facebook 原生广告:MediaView 显示灰色矩形
ConstraintLayout 中的 MoPubRecyclerAdapter 和 Facebook 原生广告崩溃