Rozpocznij

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ą:

Dopiero zaczynasz korzystać z zapośredniczenia? Przeczytaj artykuł Zapośredniczenie AdMob – omówienie.

Inicjowanie pakietu SDK do reklam mobilnych Google (beta)

Przewodnik Szybki start pokazuje, jak zainicjować pakiet SDK do reklam mobilnych Google (wersja beta). Podczas tego wywołania inicjującego inicjowane są też adaptery mediacji. Aby zweryfikować pełne uczestnictwo każdej sieci reklamowej 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 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.
    }
  }
}

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 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();
  }
}

Wykluczanie modułów com.google.android.gms w integracjach zapośredniczenia

Adaptery zapośredniczenia nadal zależą od bieżącej wersji beta pakietu SDK do reklam mobilnych Google. Jednak pakiet SDK do reklam mobilnych Google (wersja beta) zawiera wszystkie klasy wymagane przez adaptery zapośredniczenia. Aby uniknąć błędów kompilacji związanych z duplikatami symboli, musisz wykluczyć bieżący pakiet SDK do reklam mobilnych Google (wersja beta) z pobierania jako zależności przez adaptery zapośredniczenia.

W pliku build.gradle na poziomie aplikacji wyklucz globalnie moduły play-services-adsplay-services-ads-lite ze wszystkich zależności.

configurations {
  all {
    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());
    }
  }
);

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 przestrzegać przepisów stanowych USA dotyczących prywatności lub Ogólnego rozporządzenia o ochronie danych (RODO), wykonaj czynności opisane w sekcjach Ustawienia dotyczące przepisów stanowych USA lub Ustawienia RODO, aby dodać partnerów do mediacji do listy partnerów reklamowych w sekcji 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.