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-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")
}
}
檢查載入廣告的廣告聯播網轉接程式類別
以下是記錄橫幅廣告廣告聯播網類別名稱的部分程式碼範例:
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 中介服務使用橫幅廣告
請務必在所有第三方廣告來源 UI 中,停用 AdMob 中介服務所用橫幅廣告單元的重新整理功能。AdMob 也會根據橫幅廣告單元的重新整理頻率觸發重新整理,因此這樣做可避免重複重新整理。
美國州級隱私權法律和 GDPR
如需遵守美國州級隱私權法或《一般資料保護規則》(GDPR),請按照美國州級法規設定或 GDPR 設定中的步驟,在 AdMob「隱私權與訊息」的美國州別或 GDPR 廣告合作夥伴名單中新增中介服務合作夥伴。否則合作夥伴可能無法在您的應用程式中放送廣告。
進一步瞭解如何使用 Google User Messaging Platform (UMP) SDK 啟用受限的資料處理模式 (RDP),以及取得 GDPR 同意聲明。