Начать

Выберите платформу: Android (бета-версия) Новоизбранный Android iOS Unity Flutter

AdMob Mediation — это функция, позволяющая показывать рекламу в ваших приложениях из нескольких источников, включая сеть AdMob и сторонние рекламные платформы, в одном месте. AdMob Mediation помогает максимизировать коэффициент заполнения и увеличить монетизацию, отправляя запросы на показ рекламы в несколько сетей, чтобы убедиться, что вы нашли лучшую доступную сеть для показа рекламы. Пример из практики .

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

Прежде чем интегрировать медиацию для рекламного формата, необходимо интегрировать этот рекламный формат в ваше приложение:

Впервые сталкиваетесь с медиацией? Ознакомьтесь с обзором медиации AdMob .

Инициализация GMA Next Gen SDK

Краткое руководство по началу работы показывает, как инициализировать GMA Next-Gen SDK . Во время этой инициализации также инициализируются адаптеры медиации. Важно дождаться завершения инициализации, прежде чем загружать рекламу, чтобы убедиться в полном участии всех рекламных сетей при первом запросе рекламы.

Приведенный ниже пример кода показывает, как проверить состояние инициализации каждого адаптера перед отправкой запроса на показ рекламы.

Котлин

import com.google.android.libraries.ads.mobile.sdk.MobileAds
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize GMA Next-Gen SDK on a background thread.
      MobileAds.initialize(this@MainActivity, InitializationConfig.Builder("SAMPLE_APP_ID").build()) {
        initializationStatus ->
        for ((adapterName, adapterStatus) in initializationStatus.adapterStatusMap) {
          Log.d(
            "MyApp",
            String.format(
              "Adapter name: %s, Status code: %s, Status string: %s, Latency: %d",
              adapterName,
              adapterStatus.initializationState,
              adapterStatus.description,
              adapterStatus.latency,
            ),
          )
        }
        // Adapter initialization is complete.
      }
      // Other methods on MobileAds can now be called.
    }
  }
}

Java

import com.google.android.libraries.ads.mobile.sdk.MobileAds;
import com.google.android.libraries.ads.mobile.sdk.initialization.AdapterStatus;
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(
            () -> {
              // Initialize GMA Next-Gen SDK on a background thread.
              MobileAds.initialize(
                  this,
                  new InitializationConfig.Builder("SAMPLE_APP_ID")
                      .build(),
                  initializationStatus -> {
                    Map<String, AdapterStatus> adapterStatusMap =
                        initializationStatus.getAdapterStatusMap();
                    for (String adapterClass : adapterStatusMap.keySet()) {
                      AdapterStatus adapterStatus = adapterStatusMap.get(adapterClass);
                      Log.d(
                          "MyApp",
                          String.format(
                              "Adapter name: %s, Status code: %s, Status description: %s,"
                                  + " Latency: %d",
                              adapterClass,
                              adapterStatus.getInitializationState(),
                              adapterStatus.getDescription(),
                              adapterStatus.getLatency()));
                    }
                    // Adapter initialization is complete.
                  });
              // Other methods on MobileAds can now be called.
            })
        .start();
  }
}

Исключить модули com.google.android.gms из интеграций медиации.

Адаптеры посредничества по-прежнему зависят от текущего GMA Next-Gen SDK. Однако GMA Next-Gen SDK включает все классы, необходимые для адаптеров посредничества. Во избежание ошибок компиляции, связанных с дублированием символов, необходимо исключить текущий GMA Next-Gen SDK из списка зависимостей, используемых адаптерами посредничества.

В файле build.gradle на уровне приложения исключите модули play-services-ads и play-services-ads-lite из всех зависимостей:

Котлин

configurations.configureEach {
    exclude(group = "com.google.android.gms", module = "play-services-ads")
    exclude(group = "com.google.android.gms", module = "play-services-ads-lite")
}

Классный

configurations.configureEach {
    exclude group: "com.google.android.gms", module: "play-services-ads"
    exclude group: "com.google.android.gms", module: "play-services-ads-lite"
}

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

Вот пример кода, который выводит в консоль имя класса рекламной сети для баннерной рекламы:

Котлин

BannerAd.load(
  BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
  object : AdLoadCallback<BannerAd> {
    override fun onAdLoaded(ad: BannerAd) {
      Log.d(
        "MyApp", "Adapter class name: " +
          ad.getResponseInfo().mediationAdapterClassName
      )
    }
  }
)

Java

BannerAd.load(
  new BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
  new AdLoadCallback<BannerAd>() {
    @Override
    public void onAdLoaded(@NonNull BannerAd ad) {
      Log.d("MyApp",
          "Adapter class name: " + ad.getResponseInfo().getMediationAdapterClassName());
    }
  }
);

Обязательно отключите обновление во всех пользовательских интерфейсах сторонних источников рекламы для баннерных объявлений, используемых в AdMob Mediation. Это предотвратит двойное обновление, поскольку AdMob также запускает обновление в зависимости от частоты обновления вашего баннерного объявления.

Законы штатов США о защите конфиденциальности и GDPR

Если вам необходимо соблюдать законы США о защите конфиденциальности или Общий регламент по защите данных (GDPR) , выполните действия, описанные в настройках законов США или настройках GDPR , чтобы добавить ваших партнеров по медиации в список партнеров AdMob по защите конфиденциальности и обмену сообщениями, соответствующих требованиям США или GDPR. Несоблюдение этого требования может привести к тому, что партнеры не смогут показывать рекламу в вашем приложении.

Узнайте больше о включении ограниченной обработки данных (RDP) и получении согласия в соответствии с GDPR с помощью SDK платформы обмена сообщениями пользователей Google (UMP) .