---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/compose-multiplatform/adaptive-sticky-banner.md
  - https://ads.yandex.com/helpcenter/ru/dev/compose-multiplatform/adaptive-sticky-banner.md
  - https://ads.yandex.com/helpcenter/zh/dev/compose-multiplatform/adaptive-sticky-banner.md
  - href: zh/dev/compose-multiplatform/adaptive-sticky-banner.md
    type: text/markdown
    title: Markdown version
  - href: llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/zh/llms.txt

# 自适应粘性横幅

<!-- source: zh/dev/_includes/adaptive-sticky-banner.md -->
自适应固定横幅广告是一种小型广告，会自动更新，并显示在应用屏幕的顶部或底部。它不会遮挡主要内容，常用于游戏应用中。
<!-- endsource: zh/dev/_includes/adaptive-sticky-banner.md -->

<!-- source: zh/dev/_includes/adaptive-sticky-banner.md -->
自适应固定横幅广告会针对每台设备优化广告尺寸，从而实现最佳效果。借助这种广告类型，开发者可设置广告允许的最大宽度，系统将自动确定最佳广告尺寸。
<!-- endsource: zh/dev/_includes/adaptive-sticky-banner.md -->

{% cut "外观" %}

<img src="https://yastatic.net/s3/doc-binary/src/docs/support/mobile-ads/zh/monetization/_images/banner-sticky-zh-ex.png" width="200">

{% endcut %}

本指南展示了如何将自适应粘性横幅集成到 Compose Multiplatform 应用中。
除了代码示例和说明之外，它还包含特定格式的建议和其他资源的链接。

## 前提条件 {#pre}

<!-- source: zh/dev/_includes/pre-compose-multiplatform.md -->
1. 按照[快速入门](https://ads.yandex.com/helpcenter/zh/dev/compose-multiplatform/quick-start.md)中的流程集成 Yandex Mobile Ads Compose Multiplatform 插件。
2. 确保您运行的是最新的 [Yandex Mobile Ads Compose Multiplatform 插件](https://ads.yandex.com/helpcenter/zh/dev/platforms.md)版本。 如果您使用聚合，请确保运行最新版本的[统一构建](https://ads.yandex.com/helpcenter/zh/dev/platforms.md)。
<!-- endsource: zh/dev/_includes/pre-compose-multiplatform.md -->

## 实施 {#implement}

集成自适应粘性横幅的关键步骤：

* 添加 `Banner` Composable，并传入容器宽度的 `BannerAdSize.Sticky`。
* 通过 `BannerEvents` 注册生命周期回调。

## 自适应粘性横幅集成注意事项 {#features}

1. 使用 `rememberBannerAdState()` 创建状态，并指定 `BannerAdSize.Sticky` 尺寸（容器宽度，以 `dp` 为单位）。 可选择传递 `BannerEvents`。
2. 通过调用 `loadAd(AdRequest)` 开始加载 — 通常在广告位 ID 和宽度准备好后从 `LaunchedEffect` 调用。
3. 通过 `state` 参数将状态传递到 `Banner` 可组合项。

屏幕上的版位示例：

```kotlin
@Composable
fun StickyBannerSlot(adRequest: AdRequest, width: Dp) {
    val bannerState = rememberBannerAdState(
        adSize = BannerAdSize.Sticky(width),
        events = BannerEvents(
            onAdLoaded = { adInfo -> /* ad loaded */ },
            onAdFailedToLoad = { error -> /* handle error */  },
            onAdClicked = { /* ad clicked */ },
            onImpression = { data -> /* impression tracked */ },
        ),
    )

    LaunchedEffect(adRequest) {
        bannerState.loadAd(adRequest)
    }

    Banner(
        state = bannerState,
        modifier = Modifier.fillMaxWidth(),
    )
}
```

您需要从 Yandex Advertising Network 界面获取 `adUnitId`。 集成时，您可以使用 `demo-banner-yandex`；在发布前请将其替换为您的生产 ID。 通过 `AdRequest` 扩展请求（例如 `targeting`、`parameters`、`preferredTheme`）— 额外的上下文有助于改善广告选择。 详情请参阅[广告定位](https://ads.yandex.com/helpcenter/zh/dev/compose-multiplatform/target.md)。

根据可用区域大小设置宽度：建议采用父容器或屏幕的全宽，并考虑内边距与安全区域。 广告高度会自动选择。

加载成功后，广告会自动展示。

## 自适应粘性横幅集成的具体注意事项 {#features}

1. 如果 `onAdFailedToLoad` 报错，请不要立即尝试加载其他广告。 如果必须重试，请限制尝试次数 — 这可以降低因网络节流而出现重复失败请求和连接问题的风险。

1. 自适应粘性横幅在充分利用可用宽度时效果最佳。 在大多数情况下，这是设备屏幕宽度。 需要考虑内边距与安全区域。

1. 对于给定的设备，粘性横幅尺寸保持稳定：在设备上验证布局后，可以依赖相同的尺寸类。

1. 自适应粘性横幅高度至少为 50 dp，最多为屏幕高度的 15%。

## 测试自适应粘性横幅集成 {#test}

{% list tabs %}

- Android

   <!-- source: zh/dev/_includes/test-android-sticky-banner.md -->
   ### 使用演示广告单元进行广告测试 {#demo-blocks}

   使用测试广告来检查您的自适应固定横幅广告集成和应用本身。为了确保每次广告请求都能返回测试广告，您可以使用一个特殊的演示广告版位 ID。

   演示广告单元 ID：`demo-banner-yandex`.

   {% note warning %}

   在应用商店发布应用前，请务必将演示广告版位 ID 替换为您在 Yandex Advertising Network 接口中获取的真实 ID。

   {% endnote %}

   有关所有可用演示广告版位 ID 的列表，请参阅[用于测试的演示广告单元](https://ads.yandex.com/helpcenter/zh/dev/android/demo-blocks.md)。

   ### 测试广告集成 {#test-int}

   您可以使用 SDK 的内置分析工具检查自适应固定横幅广告是否已正确集成。日志中将显示包含测试结果的详细报告。

   要查看报告，请在 Android 应用调试工具 [Logcat](https://developer.android.com/studio/command-line/logcat) 中搜索关键词“YandexAds”。

   ```bash
   adb logcat -v brief '*:S YandexAds'
   ```

   如果集成成功，将返回以下消息：
   ```bash
   adb logcat -v brief '*:S YandexAds'
   mobileads$ adb logcat -v brief '*:S YandexAds'
   I/YandexAds(13719): [Integration] Ad type banner was integrated successfully
   ```

   如果存在任何横幅广告集成问题，您将收到详细的问题报告和故障排除建议。
   <!-- endsource: zh/dev/_includes/test-android-sticky-banner.md -->

- iOS

   ### 使用演示广告单元进行广告测试

   <!-- source: zh/dev/_includes/test-ios-inline-banner.md -->
   我们建议使用测试广告来测试您的广告集成和应用本身。

   为了保证为每个广告请求返回测试广告，我们创建了一个特殊的演示广告版位 ID。用它来检查您的广告集成。

   演示广告单元 ID：`demo-banner-yandex`.

   {% note warning %}

   在商店中发布您的应用程序之前，确保将演示版位 ID 替换为您在 Yandex Advertising Network 界面中获得的真实 ID。

   {% endnote %}

   您可以在 [用于测试的演示广告单元](https://ads.yandex.com/helpcenter/zh/dev/ios/demo-blocks.md) 部分找到可用的演示广告版位 ID 列表。
   <!-- endsource: zh/dev/_includes/test-ios-inline-banner.md -->

   ### 测试广告集成

   <!-- source: zh/dev/_includes/test-integration-ios.md -->
   您可以使用本机控制台工具测试广告集成。

   要查看详细日志，请调用 `YMAMobileAds` 类的 `enableLogging` 方法。

   ```swift
   YMAMobileAds.enableLogging()
   ```

   要查看 SDK 日志，请前往控制台工具并设置 `Subsystem = com.mobile.ads.ads.sdk`。您还可以按类别和错误级别过滤日志。

   如果您在集成广告时遇到问题，您将获得有关问题的详细报告以及如何解决这些问题的建议。

   <img src= "https://yastatic.net/s3/doc-binary/src/dev/mobile-ads/common/integration-ios-2.png">
   <!-- endsource: zh/dev/_includes/test-integration-ios.md -->

{% endlist %}

## 其他资源 {#resources}

* <!-- source: zh/dev/_includes/github-pubdev-links.md -->
  [GitHub](https://github.com/yandexmobile/yandex-ads-multiplatform) 链接。
  <!-- endsource: zh/dev/_includes/github-pubdev-links.md -->
