Как настроить прямой доступ для Ad Exchange

Google Mobile Ads SDK позволяет монетизировать приложения с помощью ресурса Ad Exchange. В этом руководстве рассказывается, как настроить приложения для работы со всеми форматами объявлений, которые поддерживаются в Ad Exchange.

Требования

Как настроить приложение для доступа к Ad Exchange

Добавьте идентификатор приложения Менеджера рекламы (его можно найти в интерфейсе Менеджера рекламы) в файл AndroidManifest.xml приложения с помощью тега <meta-data> с атрибутом android:name="com.google.android.gms.ads.APPLICATION_ID". Вместо android:value укажите собственный идентификатор приложения Менеджера рекламы, заключив его в кавычки.

<manifest>
    <application>
        <!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>

Если вы не добавите тег <meta-data>, как показано выше, произойдет сбой и появится следующее сообщение:

Missing application ID.

Затем вы можете инициализировать Google Mobile Ads SDK и выбрать формат объявлений для показа. В оставшейся части этого руководства мы будем использовать баннеры, чтобы показать, как загружать объявления из Ad Exchange. Эти же действия можно выполнить для любого формата объявлений, поддерживаемого Google Mobile Ads SDK.

Загрузка объявления из Ad Exchange

Вместо идентификатора рекламного блока можно использовать код веб-ресурса Ad Exchange с косой чертой в конце. например ca-mb-app-pub-5629679302779023/ (2-е издание).

В примере ниже код веб-ресурса Ad Exchange добавляется в запрос баннера:

Kotlin

val adRequest = BannerAdRequest.Builder("ca-mb-app-pub-5629679302779023/", AdSize.BANNER).build()

BannerAd.load(
  adRequest,
  object : AdLoadCallback<BannerAd> {
    override fun onAdLoaded(ad: BannerAd) {
      bannerAd = ad
      activity?.runOnUiThread {
        binding.bannerViewContainer.addView(ad.getView(requireActivity()))
      }
    }
  }
)

Java

BannerAdRequest adRequest = new BannerAdRequest.Builder("ca-mb-app-pub-5629679302779023/",
    AdSize.BANNER).build();

BannerAd.load(
    adRequest,
    new AdLoadCallback<BannerAd>() {
      @Override
      public void onAdLoaded(@NonNull BannerAd ad) {
        bannerAd = ad;
        runOnUiThread(
            () -> binding.bannerViewContainer.addView(ad.getView(MainActivity.this)));
      }
    });

Обратите внимание, что если вы не добавите косую черту в конце кода веб-ресурса Ad Exchange, то при запросе объявления возникнет ошибка со следующим сообщением:

Invalid Request. Cannot determine request type. Is your ad unit id correct?

Вы также можете преобразовать код веб-ресурса Ad Exchange в рекламный блок. Затем в интерфейсе Менеджера рекламы создайте тег Ad Exchange и скопируйте его в приложение. Созданный тег должен содержать код веб-ресурса Ad Exchange, за которым следуют идентификаторы дочерних рекламных блоков без косой черты в конце, например ca-mb-app-pub-5629679302779023/banner.

Готово! Теперь ваше приложение готово к загрузке и показу баннеров из Ad Exchange.

Кроме того, вы можете использовать веб-ресурс Ad Exchange для загрузки и показа других форматов объявлений из Ad Exchange, следуя соответствующим руководствам:

Как указывать минимальные цены (только для одобренных европейских издателей)

Вы можете запросить доступ к функции "Минимальные цены".

После одобрения вы сможете включать в запрос объявления общедоступную или частную минимальную цену, используя параметры pubf и pvtf соответственно. В приведенном ниже примере кода замените "123" на минимальные цены в микроединицах и валюте по умолчанию, которая используется в вашей сети. Например, если валюта по умолчанию – доллары США, то значение 6000000 будет эквивалентно 6 долларам США.

Kotlin

val extras = Bundle();
// Public floor parameter.
extras.putString("pubf", "123");
// Private floor parameter.
extras.putString("pvtf", "123");

val request = AdRequest.Builder("ca-mb-app-pub-5629679302779023/")
    .setGoogleExtrasBundle(extras)
    .build();

Java

Bundle extras = new Bundle();
// Public floor parameter.
extras.putString("pubf", "123");
// Private floor parameter.
extras.putString("pvtf", "123");

AdRequest request = new AdRequest.Builder("ca-mb-app-pub-5629679302779023/")
    .setGoogleExtrasBundle(extras)
    .build();