> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用横幅应用内消息引导用户

> 使用不会阻塞应用界面的顶部和底部横幅应用内消息引导用户。

横幅应用内消息（IAM）让您可以在不阻塞应用界面的情况下引导用户。您可以在屏幕顶部或底部显示简短的上下文消息，同时用户继续与您的应用进行交互。

您通常在用户需要特定时刻的额外上下文时使用横幅 IAM，例如他们首次到达某个屏幕或开始关键工作流程时。

<Info>
  应用内消息仅在满足触发条件时显示。您可以通过从应用设置触发器来精确控制横幅何时出现。
</Info>

***

## 何时使用横幅 IAM

在以下情况下使用横幅 IAM 进行引导：

* 当用户到达屏幕时解释该屏幕
* 引导用户完成多步骤流程
* 突出显示用户接下来应该采取的操作
* 保持引导可见但不具有侵入性

如果您需要结构化的多屏幕演练，请改用卡片或轮播 IAM。

***

## 示例引导流程

当用户首次打开您的网站或应用时，顶部横幅会欢迎他们并提示探索。当用户点击产品查看详情时，底部横幅会引导他们下一步该做什么。每个横幅仅在用户到达相关屏幕时出现。

这种方法确保用户仅在相关时才看到引导信息。

### 视觉示例：电子商务引导

以下是横幅 IAM 如何引导用户完成电子商务应用。此示例使用**两个单独的 IAM**，每个都有 **3 秒自动关闭**。当第一个横幅关闭时，第二个横幅的触发器激活，创建流畅的顺序流程：

<Columns cols={2}>
  <Card title="初始欢迎横幅" icon="hand-wave">
    <Frame>
      <img src="https://mintcdn.com/onesignal/yfdI7grM87DeSRfh/images/iam/iam-onboarding-welcome-banner.png?fit=max&auto=format&n=yfdI7grM87DeSRfh&q=85&s=0870317f04e17618fe31e49a525e3caa" alt="欢迎横幅显示'点击任何产品了解更多并开始购物！'" width="819" height="1723" data-path="images/iam/iam-onboarding-welcome-banner.png" />
    </Frame>

    当用户首次打开应用时，底部横幅提示他们探索产品。
  </Card>

  <Card title="产品选择横幅" icon="cart-shopping">
    <Frame>
      <img src="https://mintcdn.com/onesignal/yfdI7grM87DeSRfh/images/iam/iam-onboarding-product-banner.png?fit=max&auto=format&n=yfdI7grM87DeSRfh&q=85&s=dee390192eec8bae2c8da54c4a9ec983" alt="产品横幅显示'您正在查看产品！查看所有详情，准备好后将其添加到购物车。'" width="776" height="1485" data-path="images/iam/iam-onboarding-product-banner.png" />
    </Frame>

    当用户点击产品时，横幅为产品详情视图提供指导。
  </Card>
</Columns>

***

## 前提条件

开始之前，请确保您具备：

* 一个活跃的 OneSignal 应用
* 在您的应用中安装了 OneSignal SDK
* 能够从应用代码触发事件或调用方法
* 已授予 OneSignal SDK 的[用户同意](./mobile-sdk-reference#privacy)（应用内消息所需）

***

## 创建横幅应用内消息

<Steps>
  <Step title="导航到应用内消息">
    在 OneSignal 仪表板中，转到 **Messages → In-App Messages** 并选择 **New In-App Message**。
  </Step>

  <Step title="选择横幅类型">
    在 **Message Type** 下，选择 **Top** 或 **Bottom**。
  </Step>

  <Step title="设计您的内容">
    包括解释屏幕用途的简短标题、需要时的可选支持文本，以及引导下一步操作的可选按钮。
  </Step>

  <Step title="配置触发器">
    添加一个或多个\*\*[应用内消息触发器](./iam-triggers)\*\*来定义横幅何时应该出现。可选择添加条件或限制以控制消息显示的频率。
  </Step>

  <Step title="设置显示时长">
    选择自动关闭（横幅在 3-10 秒后消失）或用户可关闭（横幅保持直到用户点击关闭）。
  </Step>

  <Step title="激活消息">
    保存并激活您的横幅应用内消息。
  </Step>
</Steps>

<Note>
  使用顶部横幅进行高可见性引导，使用底部横幅进行与主要操作对齐的微妙提示。对于引导，使用自动关闭以保持流程进行而无需用户操作。
</Note>

<Warning>
  避免长篇解释。横幅 IAM 不适用于详细的引导或教程。
</Warning>

***

## 从您的应用触发横幅

当用户到达特定屏幕或完成操作时，您可以使用应用内消息触发器触发横幅 IAM。触发器是您从应用代码设置的键值对。当触发条件与 IAM 的显示规则匹配时，横幅就会显示。

<CodeGroup>
  ```javascript JavaScript theme={null}
  // 当用户查看仪表板时触发
  OneSignal.addTrigger('dashboard_viewed', 'true');
  ```

  ```swift iOS theme={null}
  // 当用户查看仪表板时触发
  OneSignal.addTrigger("dashboard_viewed", value: "true")
  ```

  ```kotlin Android theme={null}
  // 当用户查看仪表板时触发
  OneSignal.addTrigger("dashboard_viewed", "true")
  ```
</CodeGroup>

<Info>
  触发器在会话期间持续存在，除非您移除或更新它们。确保每个触发器代表一个清晰、有意的引导时刻。
</Info>

### 不再需要时移除触发器

为防止横幅意外重新出现，请在不再需要时移除触发器：

<CodeGroup>
  ```javascript JavaScript theme={null}
  // 用户完成引导后移除触发器
  OneSignal.removeTrigger('dashboard_viewed');
  ```

  ```swift iOS theme={null}
  // 用户完成引导后移除触发器
  OneSignal.removeTrigger("dashboard_viewed")
  ```

  ```kotlin Android theme={null}
  // 用户完成引导后移除触发器
  OneSignal.removeTrigger("dashboard_viewed")
  ```
</CodeGroup>

***

## 链接横幅消息（可选）

您可以通过创建**多个 IAM** 来引导用户完成流程，每个都有自己的触发器。将每个横幅设置为 **3 秒后自动关闭**，以便下一个横幅可以出现。在添加下一个触发器之前移除前一个触发器，以防止横幅重叠。

<Tip>
  为了流畅的顺序引导，每个步骤创建一个 IAM，每个设置为 3 秒后自动关闭，并通过在添加下一个触发器时移除前一个触发器来链接它们。
</Tip>

### 示例：电子商务引导流程

1. 页面加载 → 触发 `iam_welcome` → 横幅："🎉 欢迎！探索我们的产品"
2. 用户点击产品 → 触发 `iam_product_view` → 横幅："👀 点击 ❤️ 保存收藏"
3. 用户添加到购物车 → 触发 `iam_add_to_cart` → 横幅："✅ 好选择！随时查看购物车"
4. 用户查看购物车 → 触发 `iam_cart_view` → 横幅："🛒 在这里查看您的商品"
5. 用户结账 → 触发 `iam_checkout` → 横幅："🎊 感谢您的订单！"

<CodeGroup>
  ```javascript JavaScript theme={null}
  // 从步骤 1 移动到步骤 2
  OneSignal.removeTrigger('iam_welcome');
  OneSignal.addTrigger('iam_product_view', 'true');
  ```

  ```swift iOS theme={null}
  // 从步骤 1 移动到步骤 2
  OneSignal.removeTrigger("iam_welcome")
  OneSignal.addTrigger("iam_product_view", value: "true")
  ```

  ```kotlin Android theme={null}
  // 从步骤 1 移动到步骤 2
  OneSignal.removeTrigger("iam_welcome")
  OneSignal.addTrigger("iam_product_view", "true")
  ```
</CodeGroup>

这创建了渐进式引导而不会让用户感到不知所措。

***

## 验证设置

<Check>
  横幅仅在触发器触发时出现，并且不会阻塞应用界面。
</Check>

如果横幅没有出现：

* 确认触发器键和值完全匹配（区分大小写）
* 验证 IAM 在仪表板中处于活跃状态
* 检查频率限制 - IAM 可能受到速率限制
* 确保用户满足目标规则（如果有）
* 检查控制台日志中的 OneSignal 触发器事件
* 验证已授予应用内消息同意（如果需要）

***

## 后续步骤

* 使用横幅应用内消息宣布新功能
* 使用卡片或轮播 IAM 创建完整的引导体验
* 细分用户以根据经验级别显示不同的引导消息
* [A/B 测试](./journeys-actions#abn-tests-multivariate-testing)不同的横幅消息以优化参与度
