通过 AdMob 中介功能,您可以在一个位置投放多个来源(包括 AdMob 广告联盟和第三方广告来源)的广告。AdMob 中介会将广告请求发送至多个广告联盟,以确保您找到最合适的广告联盟来投放广告,这有助于最大限度提高您的填充率,增加您的收入。查看案例研究。
前提条件
在为广告格式集成中介功能之前,您需要将相应广告格式集成到自己的应用中:
您是中介功能的新手吗?请阅读 AdMob 中介概览。
初始化 GMA Next-Gen SDK
本快速入门指南介绍了如何初始化 GMA Next-Gen SDK。 在初始化调用期间,中介适配器也会初始化。请务必在初始化完成后再加载广告,以确保每个广告联盟都可完全参与第一个广告请求。
以下示例代码展示了如何在发出广告请求前检查每个适配器的初始化状态。
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();
}
}
在中介集成中排除 com.google.android.gms 模块
中介适配器继续依赖于当前的 GMA Next-Gen SDK。不过, GMA Next-Gen SDK 包含中介适配器所需的所有类。 为避免出现与重复符号相关的编译错误,您需要排除 当前 GMA Next-Gen SDK,以防中介 适配器将其作为依赖项拉取。
在应用级 build.gradle 文件中,从所有依赖项中全局排除 play-services-ads 和
play-services-ads-lite 模块:
Kotlin
configurations.configureEach { exclude(group = "com.google.android.gms", module = "play-services-ads") exclude(group = "com.google.android.gms", module = "play-services-ads-lite") }
Groovy
configurations.configureEach { 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 中介搭配使用
对于 AdMob 中介里所使用的横幅广告单元,请确保在所有第三方广告来源界面中停用刷新功能。这可防止重复刷新,因为 AdMob 还会根据横幅广告单元的刷新频率触发刷新。
美国州级隐私保护法律和 GDPR
如果您需要遵守美国州级隐私保护 法律或《一般数据保护 条例》(GDPR),请按照 美国州级法规 设置或GDPR 设置中的 步骤操作,在 AdMob“隐私权和消息”的 美国州级法规或 GDPR 广告合作伙伴列表中添加您的 中介合作伙伴。否则,合作伙伴可能无法在您的应用中投放广告。
详细了解如何启用 受限的数据处理 (RDP) 以及如何使用 Google User Messaging Platform (UMP) SDK 征求 GDPR 意见征求。