Zapośredniczenie AdMob to funkcja, która umożliwia wyświetlanie reklam we własnych aplikacjach z wielu źródeł, w tym z sieci AdMob i zewnętrznych źródeł reklam, w jednym miejscu. Zapośredniczenie w AdMob pomaga maksymalizować współczynnik wypełnienia i zwiększać przychody, ponieważ wysyła żądania reklamy do różnych sieci, aby znaleźć najlepszą sieć do wyświetlania reklam. Studium przypadku.
Wymagania wstępne
Zanim zintegrujesz mediację z formatem reklamy, musisz zintegrować ten format reklamy z aplikacją:
- Banery reklamowe
- Reklamy pełnoekranowe
- Reklamy natywne
- Reklamy z nagrodą
- Reklamy pełnoekranowe z nagrodą
Dopiero zaczynasz korzystać z zapośredniczenia? Przeczytaj artykuł Zapośredniczenie AdMob – omówienie.
Zainicjuj GMA Next-Gen SDK
Z tego krótkiego przewodnika dowiesz się, jak zainicjować GMA Next-Gen SDK. Podczas tego wywołania inicjującego inicjowane są też adaptery mediacji. Aby mieć pewność, że każda sieć reklamowa uczestniczy w pierwszym żądaniu reklamy, przed wczytaniem reklam poczekaj na zakończenie inicjowania.
Poniższy przykładowy kod pokazuje, jak sprawdzić stan inicjowania każdego adaptera przed wysłaniem żądania reklamy.
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();
}
}
Wykluczanie modułów com.google.android.gms w integracjach zapośredniczenia
Adaptery do zapośredniczenia nadal zależą od bieżącego GMA Next-Gen SDK. Jednak GMA Next-Gen SDK obejmuje wszystkie klasy wymagane przez adaptery do zapośredniczenia. Aby uniknąć błędów kompilacji związanych ze zduplikowanymi symbolami, musisz wykluczyć bieżącą GMA Next-Gen SDK z pobierania jako zależności przez adaptery mediacji.
W pliku build.gradle na poziomie aplikacji wyklucz globalnie moduły play-services-ads i play-services-ads-lite ze wszystkich zależności:
Kotlin
configurations.configureEach { exclude(group = "com.google.android.gms", module = "play-services-ads") exclude(group = "com.google.android.gms", module = "play-services-ads-lite") }
Zakręcony
configurations.configureEach { exclude group: "com.google.android.gms", module: "play-services-ads" exclude group: "com.google.android.gms", module: "play-services-ads-lite" }
Sprawdzanie, która klasa adaptera sieci reklamowej wczytała reklamę
Oto przykładowy kod, który rejestruje nazwę klasy sieci reklamowej w przypadku reklamy banerowej:
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());
}
}
);
Używanie reklam banerowych w ramach zapośredniczenia AdMob
Pamiętaj, aby wyłączyć odświeżanie w interfejsach wszystkich zewnętrznych źródeł reklam w przypadku jednostek reklamowych z banerami używanych w zapośredniczeniu AdMob. Zapobiega to podwójnemu odświeżaniu, ponieważ AdMob również wywołuje odświeżanie na podstawie częstotliwości odświeżania jednostki z banerem reklamowym.
Amerykańskie przepisy stanowe o ochronie prywatności i RODO
Jeśli musisz zachować zgodność z amerykańskimi przepisami stanowymi dotyczącymi prywatności lub Ogólnym rozporządzeniem o ochronie danych (RODO), wykonaj czynności opisane w sekcjach Ustawienia dotyczące przepisów stanowych USA lub Ustawienia dotyczące RODO, aby dodać partnerów zapośredniczających reklamy do listy partnerów reklamowych w narzędziu Prywatność i wyświetlanie wiadomości w AdMob. Jeśli tego nie zrobisz, partnerzy mogą nie wyświetlać reklam w Twojej aplikacji.
Dowiedz się więcej o włączaniu ograniczonego przetwarzania danych i uzyskiwaniu zgody wymaganej przez RODO za pomocą pakietu SDK platformy do personalizowania wiadomości wyświetlanych użytkownikom (UMP) od Google.