開始使用

AdMob 中介服務可讓您在同一個位置,放送眾多來源的廣告,包括 AdMob 聯播網和第三方廣告來源的廣告。AdMob 中介服務會向多個聯播網送出廣告請求,以確保您透過最合適的聯播網放送廣告,進而提高您的廣告供應率和收益。個案研究

必要條件

如要整合廣告格式的中介服務,您必須先將該廣告格式整合至應用程式:

第一次使用中介服務嗎?請參閱「AdMob 中介服務總覽」。

初始化 Google Mobile Ads SDK (Beta 版)

快速入門指南說明如何初始化 Google Mobile Ads SDK (Beta 版)。在該初始化呼叫期間,中介服務轉接程式也會初始化。請務必等待初始化完成,再載入廣告,確保每個廣告聯播網都能參與第一次廣告請求。

以下程式碼範例說明如何在發出廣告請求前,檢查每個中介服務的初始化狀態。

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

在中介服務整合中排除 com.google.android.gms 模組

中介服務轉接程式仍依附於目前的 Google Mobile Ads SDK (Beta 版)。不過,Google Mobile Ads SDK (Beta 版) 包含中介服務轉接程式所需的所有類別。為避免重複符號導致編譯錯誤,您需要排除目前從中介服務轉接程式做為依附元件提取的 Google Mobile Ads SDK (Beta 版)。

在應用程式層級的 build.gradle 檔案中,從所有依附元件全域排除 play-services-adsplay-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")
  }
}

檢查載入廣告的廣告聯播網轉接程式類別

以下是記錄橫幅廣告廣告聯播網類別名稱的部分程式碼範例:

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

請務必在所有第三方廣告來源 UI 中,停用 AdMob 中介服務所用橫幅廣告單元的重新整理功能。AdMob 也會根據橫幅廣告單元的重新整理頻率觸發重新整理,因此這樣做可避免重複重新整理。

美國州級隱私權法律和 GDPR

如需遵守美國州級隱私權法《一般資料保護規則》(GDPR),請按照美國州級法規設定GDPR 設定中的步驟,在 AdMob「隱私權與訊息」的美國州別或 GDPR 廣告合作夥伴名單中新增中介服務合作夥伴。否則合作夥伴可能無法在您的應用程式中放送廣告。

進一步瞭解如何使用 Google User Messaging Platform (UMP) SDK 啟用受限的資料處理模式 (RDP),以及取得 GDPR 同意聲明。