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

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

Предпосылки

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

Интеграция

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

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

Загрузить объявление

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

Ява

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() должен быть вызван из основного потока, и последующие вызовы не будут иметь никакого эффекта.

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

Ява

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