> ## 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.

# 应用内触发器

> 向用户显示应用内消息的选项。

## 概述

使用触发器在您选择的时间向受众中的用户显示应用内消息。与推送、电子邮件和短信在特定时间发送消息不同,应用内消息需要触发器来确定何时在您的应用中向用户显示消息。

<Note>
  触发器确定何时显示消息。要设置消息应显示的频率,请参阅[计划和频率](./in-app-messages-setup#schedule-%26-frequency)。
</Note>

<Frame caption="在 OneSignal 仪表板中创建应用内消息时设置触发器">
  <img src="https://mintcdn.com/onesignal/sfRFE3uPEhgSxmaa/images/iam/triggers.png?fit=max&auto=format&n=sfRFE3uPEhgSxmaa&q=85&s=dba1e928eb406fc5bd6f2008f4c30869" width="1138" height="382" data-path="images/iam/triggers.png" />
</Frame>

### 要求

* 查看[应用内消息概述](./in-app-messages-setup)以了解其他设置和要求。
* 某些触发器(如下所述)是程序化的,需要在应用中添加代码才能显示消息。
* **在新会话开始之前,用户必须在受众范围内,触发器才能显示消息。** 当应用失去焦点至少 30 秒后,新会话开始。请参阅[应用内消息的显示方式](./in-app-messages-setup#how-in-app-messages-are-shown)。

***

## 触发器类型

有四种类型的触发器。每种都可以与 **AND** 和 **OR** 运算符组合使用,以仅在非常特定的条件下显示。

### 打开应用时

**无需代码。** 在下次打开应用时显示消息。受众中的用户在打开应用时将有资格接收消息。

* 对于需要标签或用户在会话期间加入的特定操作的受众细分,他们需要启动新会话才能在下次打开应用时显示消息。
* 对于针对所有用户或应用版本过滤器的受众细分,当用户打开应用时将显示消息。即使是全新用户也是如此。

### 应用内触发器

**需要代码。** 当用户执行某些操作时显示消息。需要在应用中将 `key` 和 `value` 传递到 [`addTrigger` 方法](./mobile-sdk-reference#in-app-messages)。

<Frame caption="设置程序化应用内触发器。">
  <img src="https://mintcdn.com/onesignal/sfRFE3uPEhgSxmaa/images/iam/in-app-trigger.png?fit=max&auto=format&n=sfRFE3uPEhgSxmaa&q=85&s=0732451f4ff8c8bf2f43231432b99a4a" width="1334" height="652" data-path="images/iam/in-app-trigger.png" />
</Frame>

当您的应用调用方法 `addTrigger('trigger', '1')` 时,示例将显示应用内消息。请记住,在新会话开始之前,用户必须在受众范围内,触发器才能显示消息。有关更多详细信息,请参阅上面的[要求](#requirements)。

#### 重要的应用内触发器要求

* `keys` 和 `values` 对空格和大小写敏感。设置触发器时检查是否有意外的空格或大小写。
* 您可以要求存在多个 `keys` 和 `values` 才能显示消息。
  * 使用 `AND` 条件的每个键值对都必须满足,触发器才能显示消息。
  * 使用 `OR` 条件的键值对如果满足任何一个键值对,就会显示消息。
* 当需要多个触发器时,您可以使用 [`removeTrigger` 方法](./mobile-sdk-reference#in-app-messages#remove-trigger)在需要时删除触发器。
* `大于` 和 `小于` 条件适用于数字值,即使它们在代码中设置为字符串。
  * 如果您想在用户达到 5 级时显示消息。您可以将受众设置为所有用户,但将触发器设置为"level is 5"。每次用户升级时,您都会调用 `addTrigger("level", "x")`,其中"x"是他们达到的级别。这会持续递增,直到调用 `addTrigger("level", "5");`,然后应用内消息将向用户显示。

### 会话持续时间

**无需代码。** 在当前应用会话中经过特定秒数后显示消息。在新会话开始之前,用户必须在受众范围内,触发器才能显示消息。有关更多详细信息,请参阅上面的[要求](#requirements)。

### 距上次应用内消息的时长

**无需代码。** 自最近的应用内消息以来经过特定秒数后显示消息。在新会话开始之前,用户必须在受众范围内,触发器才能显示消息。有关更多详细信息,请参阅上面的[要求](#requirements)。

这对于不太紧急或优先级较低的消息很有帮助,这样它们就不会与更重要的消息显示得太近。

***

## 此消息应何时关闭?

此选项允许您控制消息应在屏幕上停留多长时间。

* **显示直到关闭**:消息将显示,直到实际采取行动。单击关闭按钮或滑动关闭消息。
* **在一定时间后关闭**:设置消息在自动从屏幕上删除之前显示的秒数。如果消息是信息性的并且不需要用户操作,这很有帮助。

***

## 您想多久显示一次此消息?

虽然触发器确定何时显示消息,但此选项允许您控制应显示消息的频率。有关更多详细信息,请参阅[计划和频率](./in-app-messages-setup#schedule-%26-frequency)。

<Frame caption="显示计划应用内消息功能的图像">
  <img src="https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/fb6d705-Screen_Shot_2022-09-28_at_3.44.24_PM.png?fit=max&auto=format&n=KSCNwSpBCNSQ8xdF&q=85&s=f52d005f9b59abb767c2968c24359fd2" width="1766" height="642" data-path="images/docs/fb6d705-Screen_Shot_2022-09-28_at_3.44.24_PM.png" />
</Frame>

### 设置消息显示的时间和次数

**仅一次**是默认设置。应用内消息只会向订阅显示 1 次。

**每次满足触发器条件**将在每次满足触发器条件时显示此消息。

* 对于应用内触发器,这可能是一个会话中的多次。对于其他触发器,每个会话只有一次。

**多次**允许您设置此消息可以显示的具体次数以及每次显示之间等待的时间。

* 如果您设置:"`2` 次,间隔 `1` **小时**" - 消息将被允许触发总共 `2` 次。第一次是满足触发器时,第二次是满足触发器并且已经过 `1` 小时。
* 如果您设置"`12` 次,间隔 `30` **天**" - 消息将在一年内大约每月显示一次。

***

## 常见问题

### 触发器是标签吗?

触发器不是标签。触发器是在我们 SDK 的[触发器方法](./mobile-sdk-reference#in-app-messages)中设置的键值对。[标签](./add-user-data-tags)是您可以设置并用于在受众中定位用户的用户数据。

为细分设置标签以在受众中使用,并使用触发器显示消息。

### 我可以使用多个触发器吗?

是的,您可以使用多个触发器。有关更多详细信息,请参阅[重要的应用内触发器要求](#important-in-app-trigger-requirements)。

***
