展示类型的自定义原生广告格式和开放式衡量

本指南介绍了如何将自定义原生广告格式与开放式衡量集成。

前提条件

在继续之前,请先完成以下事项:

集成

如果您计划将开放式衡量与不包含视频素材资源的自定义原生广告格式搭配使用,则需要自行调用开放式衡量 API。

如果您使用的是包含视频素材资源的自定义原生广告格式,则无需遵循本指南;移动广告 SDK 会代表您跟踪视频素材资源的可见性。

加载广告

无论您是否使用开放式衡量,加载广告的方式都是相同的。以下方法演示了如何请求自定义原生广告:

Java

private void loadCustomNativeAd(Context context, ViewGroup nativeCustomFormatAdContainer) {

  AdLoader adLoader =
      new AdLoader.Builder(context, "AD_UNIT_ID")
          .forCustomFormatAd(
              "CUSTOM_TEMPLATE_ID",
              new NativeCustomFormatAd.OnCustomFormatAdLoadedListener() {
                @Override
                public void onCustomFormatAdLoaded(@NonNull NativeCustomFormatAd ad) {
                  // Show the ad first and then register your view and begin open measurement.
                  // Make sure to do this on the main thread.

                  // ...
                  // Show ad
                  // ...

                  startOpenMeasurement(ad, nativeCustomFormatAdContainer);
                }
              },
              new NativeCustomFormatAd.OnCustomClickListener() {
                @Override
                public void onCustomClick(NativeCustomFormatAd ad, String assetName) {
                  // Handle the click action
                }
              })
          .build();
  adLoader.loadAd(new AdRequest.Builder().build());
}

Kotlin

private fun loadCustomNativeAd(context: Context, nativeCustomFormatAdContainer: ViewGroup) {
  val adLoader =
    AdLoader.Builder(context, "AD_UNIT_ID")
      .forCustomFormatAd(
        "CUSTOM_TEMPLATE_ID",
        NativeCustomFormatAd.OnCustomFormatAdLoadedListener { ad ->
          // Show the ad first and then register your view and begin open measurement. Make sure
          // to do this on the main thread.

          // ...
          // Show ad
          // ...

          startOpenMeasurement(ad, nativeCustomFormatAdContainer)
        },
        NativeCustomFormatAd.OnCustomClickListener { ad, assetName ->
          // Handle the click action.
        },
      )
      .build()

  adLoader.loadAd(AdRequest.Builder().build())
}

AD_UNIT_IDCUSTOM_TEMPLATE_ID 替换为您的广告单元 ID 和自定义模板 ID。

注册观看并开始衡量

如需在自定义原生广告上启用开放式衡量,请先展示广告,然后向与自定义原生广告关联的 DisplayOpenMeasurement 对象注册自定义广告视图。DisplayOpenMeasurement 对象提供 setView() 方法,用于向 Open Measurement 注册容器视图。

您还需要明确告知 SDK 开始衡量广告。为此,请对自定义原生广告的 DisplayOpenMeasurement 对象调用 start() 方法。必须从主线程调用 start() 方法,后续调用无效。

外观如下:

Java

private void startOpenMeasurement(
    NativeCustomFormatAd ad, ViewGroup nativeCustomFormatAdContainer) {
  DisplayOpenMeasurement displayOpenMeasurement = ad.getDisplayOpenMeasurement();
  if (displayOpenMeasurement != null) {
    displayOpenMeasurement.setView(nativeCustomFormatAdContainer);
    displayOpenMeasurement.start();
  }
}

Kotlin

private fun startOpenMeasurement(
  ad: NativeCustomFormatAd,
  nativeCustomFormatAdContainer: ViewGroup,
) {
  ad.getDisplayOpenMeasurement()?.let { displayOpenMeasurement ->
    displayOpenMeasurement.setView(nativeCustomFormatAdContainer)
    displayOpenMeasurement.start()
  }
}

请注意,您应先展示广告,然后再注册视图。有关展示广告的说明,请参阅自定义原生广告格式

customTemplateAdFrame 布局是自定义原生广告的广告容器,必须包含视图边界框内的所有素材资源。

通过 IAB 认证

发布应用后,您将开始接收衡量数据;不过,在您完成 IAB 认证流程之前,您的数据不会获得认证。