Пользовательские форматы нативной рекламы дисплейного типа и Open Measurement

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

Предварительные требования

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

Интеграция

Если вы планируете использовать Open Measurement с пользовательскими форматами нативной рекламы, не содержащими видеоконтент, вам придётся самостоятельно вызывать API Open Measurement.

Если вы используете собственные форматы нативной рекламы с видеоконтентом, вам не нужно следовать этому руководству; SDK для мобильной рекламы отслеживает видимость видеоконтента от вашего имени.

Загрузить рекламу

Загрузка рекламы происходит одинаково независимо от того, используете ли вы OpenMeasurement или нет. Вот метод, демонстрирующий, как запросить пользовательскую нативную рекламу:

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());
}

Котлин

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() для регистрации вашего контейнерного элемента в измерении количества открытых окон.

Также необходимо явно указать SDK начать измерение вашего объявления. Для этого вызовите метод start() объекта DisplayOpenMeasurement вашего пользовательского нативного объявления. Метод start() должен вызываться из основного потока, последующие вызовы не будут иметь никакого эффекта.

Вот как это выглядит:

Java

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

Котлин

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

Обратите внимание, что показ объявления следует начать до регистрации показа. Показ объявления описан в разделе «Пользовательские форматы нативной рекламы» .

Макет customTemplateAdFrame представляет собой контейнер для пользовательской нативной рекламы и должен содержать все ресурсы, находящиеся в пределах ограничивающего прямоугольника представления.

Сертификация IAB

После выпуска приложения вы начнете получать данные измерений; однако ваши данные не будут сертифицированы до завершения процесса сертификации IAB .