Медиация AdMob – это функция, которая позволяет показывать в приложениях объявления из различных источников, таких как сеть AdMob и внешние рекламные сети. Медиация AdMob позволяет повысить заполняемость и увеличить доход, отправляя запросы в несколько рекламных сетей с целью выбора наиболее подходящей. Пример использования.
Требования
Чтобы интегрировать посредничество для определенного формата объявлений, сначала нужно интегрировать этот формат в приложение:
- Баннеры
- Межстраничные объявления
- Нативные объявления
- Объявления с вознаграждением
- Межстраничные объявления с вознаграждением
Вы только начали работать с медиацией? Прочитайте статью Обзор медиации AdMob.
Инициализация GMA Next-Gen SDK
В кратком руководстве по началу работы рассказывается, как инициализировать GMA Next-Gen SDK. Во время этого вызова инициализации также инициализируются адаптеры медиации. Важно дождаться завершения инициализации, прежде чем загружать объявления, чтобы убедиться, что все рекламные сети участвуют в первом запросе объявления.
В приведенном ниже образце кода показано, как проверить статус инициализации каждого адаптера перед отправкой запроса объявления.
Kotlin
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 из интеграций с медиацией
Адаптеры медиации по-прежнему зависят от Google Mobile Ads SDK (Legacy). ОднакоGMA Next-Gen SDK включает все классы, необходимые для адаптеров медиации. Чтобы избежать ошибок компиляции, связанных с дублированием символов, необходимо исключить Google Mobile Ads SDK (Legacy) из зависимостей, которые извлекаются медиацией адаптеров.
В файле build.gradle на уровне приложения исключите модули play-services-ads и play-services-ads-lite из всех зависимостей:
Kotlin
configurations.configureEach { exclude(group = "com.google.android.gms", module = "play-services-ads") exclude(group = "com.google.android.gms", module = "play-services-ads-lite") }
Groovy
configurations.configureEach { exclude group: "com.google.android.gms", module: "play-services-ads" exclude group: "com.google.android.gms", module: "play-services-ads-lite" }
Как узнать, какой класс адаптера рекламной сети загрузил объявление
Ниже приведен пример кода, который регистрирует название класса рекламной сети для баннера:
Kotlin
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
Отключите обновление во всех интерфейсах сторонних источников объявлений для рекламных блоков с баннерами, используемых в медиации AdMob. Это предотвратит двойное обновление, поскольку AdMob также запускает обновление на основе частоты обновления рекламного блока для баннеров.
Законы штатов США о конфиденциальности и GDPR
Если вам нужно соблюдать законы штатов США о конфиденциальности или Генеральный регламент ЕС о защите персональных данных (GDPR), выполните инструкции в разделе Настройки законов штатов США или Настройки GDPR, чтобы добавить партнеров по медиации в список рекламных партнеров для соблюдения законов штатов США или GDPR в разделе "Конфиденциальность и сообщения" в AdMob. В противном случае партнеры не смогут показывать рекламу в вашем приложении.
Узнайте больше о том, как включить ограничение обработки данных (RDP) и получить согласие по GDPR с помощью Google User Messaging Platform (UMP) SDK.