Медиация AdMob — это функция, позволяющая вам показывать рекламу в ваших приложениях из нескольких источников, включая сеть AdMob и сторонние источники рекламы, в одном месте. Медиация AdMob помогает максимизировать заполняемость и увеличить монетизацию, отправляя запросы на рекламу в несколько сетей, чтобы убедиться, что вы нашли наилучшую доступную сеть для показа рекламы. Пример из практики .
Предпосылки
Прежде чем интегрировать медиацию для формата рекламы, вам необходимо интегрировать этот формат рекламы в свое приложение:
- Рекламные баннеры
- Межстраничная реклама
- Нативная реклама
- Реклама с вознаграждением
- Рекламные объявления с вознаграждением
Впервые в медиации? Прочитайте обзор медиации AdMob .
Инициализация Google Mobile Ads SDK (бета)
В кратком руководстве по началу работы показано, как инициализировать Google Mobile Ads 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 Google Mobile Ads SDK (beta) 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.
}
}
}
Ява
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 Google Mobile Ads SDK (beta) 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 (бета-версия). Однако Google Mobile Ads SDK (бета-версия) включает все классы, необходимые адаптерам медиации. Чтобы избежать ошибок компиляции, связанных с дублированием символов, необходимо исключить текущую версию Google Mobile Ads SDK (бета-версия) из числа зависимостей адаптеров медиации.
В файле build.gradle
уровня приложения глобально исключите модули play-services-ads
и play-services-ads-lite
из всех зависимостей.
configurations {
all {
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
)
}
}
)
Ява
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 Mediation. Это предотвратит двойное обновление, поскольку AdMob также запускает обновление в зависимости от частоты обновления вашего баннерного рекламного блока.
Законы США о конфиденциальности и GDPR
Если вам необходимо соблюдать законы о конфиденциальности штатов США или Общий регламент по защите данных (GDPR) , следуйте инструкциям в настройках законодательства штатов США или GDPR , чтобы добавить своих партнёров-посредников в список рекламных партнёров AdMob Privacy & messaging или GDPR. Несоблюдение этих требований может привести к тому, что партнёры не смогут показывать рекламу в вашем приложении.
Узнайте больше о включении ограниченной обработки данных (RDP) и получении согласия GDPR с помощью SDK Google User Messaging Platform (UMP) .