您可以藉助 AdMob 中介服務,在同一個位置管理所有在應用程式中放送廣告時的廣告來源。AdMob 中介服務會向多個聯播網送出廣告請求,以確保您透過最合適的聯播網放送廣告,進而提高您的廣告供應率和收益。個案研究。
必要條件
您必須先將該廣告格式整合至應用程式,才能整合該廣告格式的中介服務:
第一次使用中介服務嗎?請參閱「AdMob 中介服務總覽」。
出價: Google Mobile Ads SDK 18.3.0 以上版本。
初始化 Mobile Ads SDK
快速入門指南將說明如何初始化 Mobile Ads SDK。在初始化呼叫期間,中介服務適配器也會進行初始化。請務必等待初始化作業完成,再載入廣告,以確保每個廣告聯播網都能在第一個廣告請求中完整參與。
以下程式碼範例說明如何在發出廣告要求前,檢查每個轉接程式初始化的狀態。
Java
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.AdapterStatus;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(
() ->
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(
this,
initializationStatus -> {
Map<String, AdapterStatus> statusMap =
initializationStatus.getAdapterStatusMap();
for (String adapterClass : statusMap.keySet()) {
AdapterStatus status = statusMap.get(adapterClass);
Log.d(
"MyApp",
String.format(
"Adapter name: %s, Description: %s, Latency: %d",
adapterClass, status.getDescription(), status.getLatency()));
}
// Start loading ads here...
}))
.start();
}
}
Kotlin
import com.google.android.gms.ads.MobileAds
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 the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this@MainActivity) { initializationStatus ->
val statusMap =
initializationStatus.adapterStatusMap
for (adapterClass in statusMap.keys) {
val status = statusMap[adapterClass]
Log.d(
"MyApp", String.format(
"Adapter name: %s, Description: %s, Latency: %d",
adapterClass, status!!.description, status.latency
)
)
}
// Start loading ads here...
}
}
}
}
檢查哪個廣告聯播網轉接程式類別載入廣告
以下範例程式碼會記錄橫幅廣告的廣告聯播網類別名稱:
Java
public void onAdLoaded() {
Log.d("Banner adapter class name: " + ad.getResponseInfo().getMediationAdapterClassName());
}
Kotlin
override fun onAdLoaded() {
Log.d("Banner adapter class name:" + ad.responseInfo.mediationAdapterClassName)
}
如要進一步瞭解這個方法,請參閱 getMediationAdapterClassName()
的 ResponseInfo
說明文件。
透過活動例項初始化廣告物件
在新廣告物件的建構函式 (例如 AdView
) 中,您必須傳入 Context
類型的物件。使用中介服務時,這個 Context
會傳遞至其他廣告聯播網。部分廣告聯播網需要使用限制較嚴格的 Context
,類型為 Activity
,且可能無法在沒有 Activity
執行個體的情況下放送廣告。因此,建議您在初始化廣告物件時傳入 Activity
例項,以確保與中介廣告聯播網的一致體驗。
搭配 AdMob 中介服務使用橫幅廣告
對於 AdMob 中介服務中使用的橫幅廣告單元,請務必停用所有第三方廣告來源 UI 中的重新整理功能。這樣可避免重複重新整理,因為 AdMob 也會根據橫幅廣告單元的重新整理頻率觸發重新整理。
搭配 AdMob 中介服務使用原生廣告
以下是實作 AdMob 中介服務的原生廣告時,可考慮採用的最佳做法。
- 原生廣告呈現方式政策
- 每個廣告聯播網都有各自的政策。使用中介服務時,請務必注意應用程式仍必須遵守提供廣告的中介服務聯播網政策。
- 以
loadAd()
取代loadAds()
loadAds()
方法只會放送 Google 廣告。如果是經由中介服務刊登的廣告,請改用loadAd()
。
美國州級隱私權法律和 GDPR
如果您需要遵守美國各州隱私權法律或一般資料保護法規 (GDPR),請按照美國州級法規設定或 GDPR 設定中的步驟,在 AdMob「隱私權與訊息」的美國州別或 GDPR 廣告合作夥伴清單中新增中介服務合作夥伴。否則可能會導致合作夥伴無法在您的應用程式上放送廣告。
進一步瞭解如何啟用受限的資料處理 (RDP),以及如何使用 Google User Messaging Platform (UMP) SDK 取得 GDPR 同意聲明。