借助 AdMob 中介功能,您可以在一个位置为您的应用投放多个来源(包括 AdMob 广告联盟和第三方广告来源)的广告。AdMob 中介会将广告请求发送至多个广告联盟,以确保您找到最合适的广告联盟来投放广告,有助于最大限度提高您的填充率,增加您的收入。案例。
前提条件
在为广告格式集成中介功能之前,您需要将相应广告格式集成到自己的应用中:
第一次使用中介功能?阅读 AdMob 中介概览。
对于出价:Google 移动广告 SDK 18.3.0 或更高版本。
初始化移动广告 SDK
快速入门指南介绍了如何初始化移动广告 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
文档。
使用 activity 实例初始化您的广告对象
在新广告对象(例如 AdView
)的构造函数中,您必须传入类型为 Context
的对象。使用中介时,此 Context
会传递到其他广告联盟。某些广告联盟需要类型为 Activity
且限制更严格的 Context
,并且如果没有 Activity
实例,可能无法投放广告。因此,我们建议在初始化广告对象时传入 Activity
实例,以确保从您的所有中介广告联盟获得一致的体验。
将横幅广告与 AdMob 中介搭配使用
对于 AdMob 中介中使用的横幅广告单元,请确保停用所有第三方广告来源界面中的刷新功能。这可防止重复刷新,因为 AdMob 还会根据横幅广告单元的刷新频率触发刷新。
将原生广告与 AdMob 中介搭配使用
以下是实现 AdMob 中介原生广告时可以考虑的一些最佳实践。
- 原生广告展示政策
- 每个广告联盟都有自己的政策。使用中介功能时请务必注意,您的应用仍需遵守提供相应广告的中介广告联盟的政策。
- 使用
loadAd()
,而不要使用loadAds()
loadAds()
方法仅投放 Google 广告。对于参与中介的广告,请改为使用loadAd()
。
美国州级隐私保护法律和 GDPR
如果您需要遵守美国州级隐私保护法律或《一般数据保护条例》(GDPR),请按照美国州级法规设置或 GDPR 设置中的步骤,将您的中介合作伙伴添加到 AdMob“隐私权和消息”的美国州级或 GDPR 广告合作伙伴名单中。否则,可能会导致合作伙伴无法在您的应用中投放广告。
详细了解如何使用 Google User Messaging Platform (UMP) SDK 启用受限的数据处理 (RDP) 和征求 GDPR 意见。