---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/compose-multiplatform/adaptive-inline-banner.md
  - https://ads.yandex.com/helpcenter/ru/dev/compose-multiplatform/adaptive-inline-banner.md
  - https://ads.yandex.com/helpcenter/zh/dev/compose-multiplatform/adaptive-inline-banner.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/zh/llms.txt

# 自适应内联横幅

<!-- source: zh/dev/_includes/adaptive-inline-banner.md -->
自适应内嵌横幅广告是一种灵活的横幅广告格式，通过针对每台设备优化广告尺寸，确保投放效果达到最优。
<!-- endsource: zh/dev/_includes/adaptive-inline-banner.md -->


<!-- source: zh/dev/_includes/adaptive-inline-banner.md -->
借助这种广告类型，开发者可设置广告允许的最大宽度和高度，系统将自动确定最佳广告尺寸。为了选择最佳广告尺寸，自适应内嵌横幅广告采用最大高度而非固定高度，这有助于提升广告表现。
<!-- endsource: zh/dev/_includes/adaptive-inline-banner.md -->

通常，这种格式用于基于信息流的应用或可以将用户注意力主要集中在广告上的上下文环境中。

{% cut "外观" %}

<img src="https://yastatic.net/s3/doc-binary/src/docs/support/mobile-ads/zh/monetization/_images/banner-inline-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.Inline`。
* 通过 `BannerEvents` 设置广告生命周期回调。

## 自适应内联横幅集成注意事项 {#features}

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

屏幕上的版位示例：

```kotlin
@Composable
fun BannerSlot(adRequest: AdRequest, width: Dp, maxHeight: Dp) {
    val bannerState = rememberBannerAdState(
        adSize = BannerAdSize.Inline(width, maxHeight),
        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`。

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

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

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

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

2. 为确保自适应内联横幅正常运行，请[将您的应用布局设置为自适应](https://kotlinlang.org/docs/multiplatform/compose-adaptive-layouts.html)。 否则广告无法正确渲染。

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

4. `BannerAdSize.Inline(width, maxHeight)` 值包含服务器端尺寸选择参数；渲染高度可能在每次加载时发生变化。

## 测试自适应内联横幅集成 {#test}

{% list tabs %}

- Android

   <!-- source: zh/dev/_includes/test-android-inline-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-inline-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 -->
