Facebook 原生广告未显示,错误“1011 - 显示格式不匹配”

e-n*_*ure 5 facebook-android-sdk facebook-ads-api facebook-audience-network

我想实现 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_width="match_parent"
android:layout_height="wrap_content"
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_width="250dp"
    android:layout_height="280dp"
    android:layout_gravity="center"
    android:background="@color/white"
    android:orientation="vertical" />
Run Code Online (Sandbox Code Playgroud)

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();
}
Run Code Online (Sandbox Code Playgroud)

}

一切都构建得很好,我可以在回收器视图中看到应该显示原生广告的矩形。但问题是它只是保持白色并且没有显示任何内容(参见屏幕截图)。

在此输入图像描述

Izh*_*Ali 0

您需要添加测试设备才能展示广告

  1. 从导航菜单转到您的货币化管理器,选择集成 --> 测试
  2. 启用测试并选中“使用真实广告商内容”
  3. 现在,通过从“设置 -> Google 帐户 -> 广告”添加“Google 广告商 ID”来添加您的测试设备

点击这里查看更多信息