Специальные медийные нативные форматы и Open Measurement

В этом руководстве рассказывается, как интегрировать специальные форматы нативных объявлений с открытым сбором данных.

Требования

Прежде чем продолжить, выполните следующие действия:

Интеграция

Если вы планируете использовать открытое измерение с собственными форматами нативных объявлений, в которых нет видеообъекта, вам нужно будет самостоятельно вызывать API открытого измерения.

Если вы используете специальные форматы нативных объявлений с видеообъектом, вам не нужно следовать инструкциям из этого руководства. Mobile Ads 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_ID и CUSTOM_TEMPLATE_ID идентификатором рекламного блока и идентификатором специального шаблона.

Как зарегистрировать представление и начать сбор данных

Чтобы включить открытое отслеживание в специальном нативном объявлении, сначала покажите объявление, а затем зарегистрируйте просмотр специального объявления с помощью объекта DisplayOpenMeasurement, связанного со специальным нативным объявлением. Объект DisplayOpenMeasurement предоставляет метод setView() для регистрации представления контейнера в Open Measurement.

Вам также нужно явно указать SDK, что нужно начать отслеживать объявление. Для этого вызовите метод start() для объекта DisplayOpenMeasurement вашего нативного объявления. Метод 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.