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 显示灰色矩形

Facebook 原生广告 API,仅显示视频

ConstraintLayout 中的 MoPubRecyclerAdapter 和 Facebook 原生广告崩溃

Facebook Audience Network 插页式广告未显示

Facebook 移动广告应用安装未显示在活动报告中