自适应粘性横幅
这是一个自动更新的小广告,放置在应用屏幕的顶部或底部。它与主要应用内容不重叠,常用于游戏应用中。
自适应粘性横幅通过优化每个设备上的广告尺寸,实现最大效率。这种广告类型允许开发者设置广告的最大允许宽度,但最佳广告尺寸仍然是自动确定的。自适应粘性横幅的高度不应超过屏幕高度的 15%。
展示效果
本指南介绍如何在 Compose Multiplatform 应用中集成自适应粘性横幅。除代码示例外,还提供格式相关建议与更多资源链接。
前提条件
- 请按快速入门完成 Yandex Mobile Ads Compose Multiplatform 插件集成。
- 请使用最新的 Yandex Mobile Ads Compose Multiplatform 插件版本。若使用聚合,请同时使用最新的统一构建版本。
实现
集成自适应粘性横幅的关键步骤:
- 添加
BannerComposable,并传入容器宽度的BannerAdSize.Sticky。 - 通过
BannerEvents注册生命周期回调。
自适应粘性横幅集成注意事项
-
在
onAdFailedToLoad收到错误时,请勿尝试立即加载新广告;如必须重试,请限制次数。 -
尽量使用全部可用宽度(通常为屏幕全宽),并计入内边距与安全区域。
-
使用
BannerAdSize.Sticky(width),传入广告容器的可用宽度。 -
对给定设备类别,粘性横幅使用 SDK 选择的稳定宽高;在代表性设备上验证一次后可依赖相同尺寸类。
-
自适应粘性横幅高度不得超过屏幕高度的 15%,且至少为 50 dp。
将横幅加入布局
将 Banner 放在需要持续可见的位置(通常固定在屏幕底部)。
示例:
@Composable
fun StickyBannerBar(adRequest: AdRequest, containerWidth: Int) {
Banner(
adRequest = adRequest,
adSize = BannerAdSize.Sticky(width = containerWidth),
modifier = Modifier.fillMaxWidth(),
events = BannerEvents(
onAdLoaded = { /* ad loaded */ },
onAdFailedToLoad = { error -> /* handle error */ },
onAdClicked = { /* ad clicked */ },
onImpression = { data -> /* impression tracked */ },
),
)
}
加载与展示
Banner 进入组合后即加载广告。
对 BannerAdSize.Sticky(width) 使用父级或屏幕宽度(含内边距与安全区域):
BoxWithConstraints(modifier = Modifier.fillMaxWidth()) {
val widthDp = maxWidth.value.toInt()
Banner(
adRequest = adRequest,
adSize = BannerAdSize.Sticky(width = widthDp),
modifier = Modifier.fillMaxWidth(),
events = BannerEvents(/* ... */),
)
}
需要 Yandex Advertising Network 的 adUnitId。
使用 BannerEvents 处理加载与生命周期。可通过 AdRequest 扩展,详见 广告定向。
加载成功后自动展示示例:
@Composable
fun StickyBanner(adUnitId: String) {
Banner(
adRequest = AdRequest(adUnitId = adUnitId),
adSize = BannerAdSize.Sticky(width = 320),
modifier = Modifier.fillMaxWidth(),
events = BannerEvents(
onAdLoaded = {
// The ad was loaded successfully and will be shown.
},
onAdFailedToLoad = { error ->
// Ad failed to load with AdRequestError.
// Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
},
onAdClicked = {
// Called when a click is recorded for an ad.
},
onImpression = { data ->
// Called when an impression is recorded for an ad.
},
),
)
}
集成时可用 'demo-banner-yandex',发布前替换为真实 ID。
释放资源
不再需要展示位时从组合中移除 Banner。不要保留旧实例;再次展示时创建新的 Banner。
测试自适应粘性横幅集成
使用演示广告单元进行广告测试
我们建议使用测试广告来测试您的自适应粘性横幅集成和应用本身。
为了保证为每个广告请求返回测试广告,我们创建了一个特殊的演示广告版位 ID。用它来检查您的广告集成。
演示广告单元 ID:demo-banner-yandex.
重要
在商店中发布您的应用程序之前,确保将演示版位 ID 替换为您在 Yandex Advertising Network 界面中获得的真实 ID。
您可以在 用于测试的演示广告单元 版块找到可用的演示广告版位 ID 列表。
测试广告集成
您可以使用 SDK 的内置分析器检查自适应粘性横幅集成。
该工具可确保您的广告正确集成并向日志输出详细报告。 要查看报告,请在用于 Android 应用调试的 Logcat 工具中搜索“YandexAds”关键字。
adb logcat -v brief '*:S YandexAds'
如果集成成功,您将看到以下消息:
adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type banner was integrated successfully
如果您在集成横幅广告时遇到问题,您将获得有关问题的详细报告以及如何解决这些问题的建议。
使用演示广告单元测试
我们建议使用测试广告来测试您的广告集成和应用本身。
为了保证为每个广告请求返回测试广告,我们创建了一个特殊的演示广告版位 ID。用它来检查您的广告集成。
演示广告单元 ID:demo-banner-yandex.
重要
在商店中发布您的应用程序之前,确保将演示版位 ID 替换为您在 Yandex Advertising Network 界面中获得的真实 ID。
您可以在 用于测试的演示广告单元 部分找到可用的演示广告版位 ID 列表。
验证广告集成
您可以使用本机控制台工具测试广告集成。
要查看详细日志,请调用 YMAMobileAds 类的 enableLogging 方法。
YMAMobileAds.enableLogging()
要查看 SDK 日志,请前往控制台工具并设置 Subsystem = com.mobile.ads.ads.sdk。您还可以按类别和错误级别过滤日志。
如果您在集成广告时遇到问题,您将获得有关问题的详细报告以及如何解决这些问题的建议。