自适应内联横幅
自适应内嵌横幅广告是一种灵活的横幅广告格式,通过针对每台设备优化广告尺寸,确保投放效果达到最优。
借助这种广告类型,开发者可设置广告允许的最大宽度和高度,系统将自动确定最佳广告尺寸。为了选择最佳广告尺寸,自适应内嵌横幅广告采用最大高度而非固定高度,这有助于提升广告表现。
此格式通常用于基于信息流的应用,或可接受主要关注广告的场景。
外观
本指南展示了如何使用 Jetpack Compose 扩展将自适应内联横幅集成到 Android 应用中。 除了代码示例和说明之外,它还提供使用此广告格式的建议和其他资源的链接。
前提条件
- 按照快速入门 中描述的 SDK 集成步骤进行操作。
- 首先,您需要初始化 广告 SDK。
- 确保您使用的是最新Yandex Mobile Ads SDK 版本。如果您使用的是广告中介服务,请更新至最新的单一构建版本。
要使用 Compose 扩展,请在 build.gradle.kts 中添加依赖:
dependencies {
implementation("com.yandex.android:mobileads:8.1.0")
implementation("com.yandex.android:mobileads-compose:8.1.0")
// Compose BOM (最低版本 2024.01.00)
implementation(platform("androidx.compose:compose-bom:2025.03.00"))
}
实施
集成自适应内联横幅的关键步骤:
- 使用
Banner可组合项,并指定BannerSize.Inline尺寸。 - 可选择传递
BannerEvents以跟踪广告事件。
自适应内联横幅集成说明
-
所有 Yandex Mobile Ads SDK 方法调用都必须在主线程中进行。
-
为了使视频广告在您的应用中正确渲染,请启用 硬件加速。 默认情况下启用硬件加速,但某些应用会将其禁用。 如果您的应用禁用了硬件加速,建议为展示广告的活动启用硬件加速。
-
如果您在
onAdFailedToLoad()回调中收到错误,请不要尝试立即加载新广告。 如果必须重试,请限制重新加载尝试次数,以避免在条件受限的情况下请求持续失败并出现连接问题。 -
为确保自适应内联横幅正常运行,请将您的应用布局设置为自适应。 如果不这样做,可能会导致广告渲染错误。
-
自适应内联横幅在充分利用可用宽度时效果最佳。 在大多数情况下,这将是设备的屏幕全宽。 确保考虑应用自身的内边距及显示安全区域。
-
自适应内联横幅适合在可滚动内容中展示。 横幅高度可以与设备屏幕高度相当,也可以被限制为最大高度,具体取决于 API。
-
广告尺寸通过
BannerSize.Inline(width, maxHeight)设置,其中宽度和最大高度以Dp为单位进行传递(如320.dp)。 计算所需的上下文会在可组合项内部自动解析。 -
横幅状态通过
rememberBannerAdState()创建,加载则是通过调用loadAd()显式触发。 如果adSize发生变化,BannerAdView将自动重新创建。
全屏内联横幅渲染规则
-
顶部不可点击安全区域的高度为 80 dp。该区域内的控件可以点击。
-
视觉元素(素材)的尺寸必须至少为 32×32 dp,包括关闭按钮及其他所有图标。
-
素材周围的可点击区域必须至少为 64×64 dp。例如,如果素材的尺寸为 32×32 dp,则其四周需有足够的内边距,以确保总可点击区域达到 64×64 dp。
-
如果控件有延迟出现,必须显示一个计时器或进度条,直到元素加载完成。
示例

广告的加载与渲染
要显示内嵌横幅广告,请使用尺寸为 BannerSize.Inline 的 Banner 可组合函数。请以 dp 为单位指定宽度和最大高度。
该可组合函数会自动处理尺寸计算、广告加载和展示次数。您无需手动管理 BannerAdView 的生命周期。
要加载广告,您需要通过 Yandex Advertising Network 接口获取的广告版位 ID。
您可以使用 AdRequest.Builder() 扩展广告请求参数。为此,请在请求中传递有关用户兴趣、页面上下文、位置以及其他附加数据的信息。上下文信息可显著提升广告质量。如需详细了解,请参阅广告定位。
自适应内嵌横幅示例
加载完成后,横幅广告将自动显示:
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.Banner
import com.yandex.mobile.ads.compose.BannerSize
@Composable
fun MyScreen() {
Banner(
adRequest = AdRequest.Builder("your-ad-unit-id").build(),
adSize = BannerSize.Inline(width = 320, maxHeight = 400),
modifier = Modifier.fillMaxWidth(),
)
}
要追踪广告事件,请传递 BannerEvents:
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.Banner
import com.yandex.mobile.ads.compose.BannerEvents
import com.yandex.mobile.ads.compose.BannerSize
@Composable
fun MyScreen() {
Banner(
adRequest = AdRequest.Builder("your-ad-unit-id").build(),
adSize = BannerSize.Inline(width = 320, maxHeight = 400),
modifier = Modifier.fillMaxWidth(),
events = BannerEvents(
onAdLoaded = { Log.d("YandexAds", "Banner loaded") },
onAdFailedToLoad = { error -> Log.e("YandexAds", error.description) },
onAdClicked = { Log.d("YandexAds", "Banner click") },
onImpression = { data -> Log.d("YandexAds", "Impression: ${data?.rawData}") },
)
)
}
如果您通过 Adfox 投放广告,则在横幅广告响应后,可以使用 AdAttributes 类型的 adAttributes 属性从 BannerAdView 对象访问 campaignId、bannerId 和 placeId 数据。
测试自适应内联横幅集成
使用演示广告单元进行广告测试
使用测试广告来检查您的自适应内嵌横幅广告集成和应用本身。为了确保每次广告请求都能返回测试广告,您可以使用一个特殊的演示广告版位 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
如果存在任何横幅广告集成问题,您将收到详细的问题报告和故障排除建议。
其他资源
- GitHub 链接。