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

# 回退消息：推送不可用时的邮件或短信

> 使用 OneSignal 实施回退策略，确保在推送通知失败时通过邮件或短信传递关键消息。了解如何使用 Journey、API 和分段设置跨渠道消息以实现可靠的用户参与。

## 为什么使用回退方法？

推送通知很强大，但不能保证触及每个用户。推送投递失败的常见原因包括：

* 用户退出或禁用通知权限
* 设备离线或处于限制状态（例如 iOS 专注模式）
* 应用已卸载或推送令牌已过期

为确保您的消息仍能传递，OneSignal 支持跨其他渠道的回退消息：

* 应用内消息
* 邮件
* 短信

通过智能回退策略，您可以确保关键通信仍能到达用户——即使推送无法送达。

***

## 回退策略概述

<Steps>
  <Step title="发送主要推送通知">
    这是您通过标准推送消息通知用户的初始尝试。
  </Step>

  <Step title="检查投递或打开状态">
    监控投递和用户交互以确定是否需要回退。
  </Step>

  <Step title="通过其他渠道触发回退">
    如果没有参与或投递，请通过邮件或短信发送相同的消息。
  </Step>
</Steps>

***

## 要求

* 为每个用户设置唯一的 [**External ID**](./users#external-id)
* 用户使用 [OneSignal SDK](./mobile-sdk-reference) 或 REST API 在其个人资料中**关联了邮件或短信数据**

***

## 推荐的实现选项

### 选项 1：OneSignal Journeys（无代码）

使用 [OneSignal Journeys](./journeys-overview) 以可视化方式自动化回退逻辑：

* 拖放界面
* 支持按打开/点击/投递进行分支
* 结合推送、应用内、邮件和短信

<Frame caption="Journeys 构建器中的回退逻辑">
  <img src="https://mintcdn.com/onesignal/tNi1OgLc_p9hiq7_/images/docs/15e2c008c3f5d5575259cadb1b8d976135ea664a800a6173dbc06668eb1b00ba-Screenshot_2025-05-08_at_4.16.58_PM.png?fit=max&auto=format&n=tNi1OgLc_p9hiq7_&q=85&s=15d9f1f1b8c877ad142ca0707f164df7" width="1422" height="1648" data-path="images/docs/15e2c008c3f5d5575259cadb1b8d976135ea664a800a6173dbc06668eb1b00ba-Screenshot_2025-05-08_at_4.16.58_PM.png" />
</Frame>

### 选项 2：使用 API 的自定义回退工作流

<Steps>
  <Step title="发送推送通知">
    使用 [Create Notification API](/reference/create-message) 向您的用户发送推送消息。您可以根据其 External ID 或自定义别名定位特定用户。

    <CodeGroup>
      ```json json theme={null}
      POST https://onesignal.com/api/v1/notifications

      {
        "include_aliases": {
          "external_id": [
            "user1",
            "user2",
            "user3"
          ]
        },
        "target_channel": "push"
      }
      ```
    </CodeGroup>
  </Step>

  <Step title="检查状态并触发回退">
    发送后，使用 [View Message API](/reference/view-message) 检查通知是否已投递。

    如果：`"received" = 0`，或状态为 `"failed"` 或 `"errored"`，则表示推送通知没有送达。

    此时，您可以使用自己的提供商（例如 Twilio 或 SendGrid），通过映射的电话号码发送 **SMS 回退**。
  </Step>
</Steps>

### 选项 3：检测并细分用户以进行回退

<Steps>
  <Step title="检测推送订阅状态">
    使用 SDK 方法：[`addPermissionObserver()`](./mobile-sdk-reference#addpermissionobserver-push)。
    它允许您的应用在运行时跟踪并响应设备通知权限状态的变化。如果在应用未运行时权限状态发生变化，观察者将在下次打开应用时触发。
  </Step>

  <Step title="标记取消订阅推送的设备">
    您可以为用户添加标签。您应用的标签（例如，
    `unsubscribed_from_push: true`）在该用户的所有渠道中共享——推送、邮件和短信。这使得以后轻松定位已退出推送通知的用户变得容易。
  </Step>

  <Step title="为回退用户创建细分群体">
    在 OneSignal 仪表板中：

    * 创建一个 `unsubscribed_from_push = true` 的细分群体
    * 使用回退邮件或短信活动定位该细分群体
    * 在 Journeys 或活动中使用此细分群体通过邮件或短信发送回退消息
  </Step>
</Steps>

***

## 最佳实践

* 使用**应用内消息或邮件**作为您的首选回退选项——它们比短信干扰性更小。
* 在发送回退消息之前添加短暂的**宽限期**（如 2-5 分钟），给用户时间参与。
* \*\*不要让用户感到困扰。\*\*限制跨渠道发送回退消息的频率。
* 始终**尊重用户偏好**——只向已选择加入该渠道的用户发送消息。
* \*\*测量有效性。\*\*使用标签、事件或分析来跟踪回退消息的有效性。

***

## 示例用例

### 安全警报

您正在发送安全警报。如果用户在 5 分钟内没有收到推送，他们将通过短信收到相同的消息。

### 订单配送更新

包裹正在配送中。您发送包含跟踪信息的推送。如果用户没有收到或打开它，他们会收到包含相同更新和直接链接的短信。

### 支付失败通知

结账时支付失败。发送推送通知用户。如果没有送达，可通过短信进行后续联系，敦促他们重试支付。

### 事件提醒

您提醒用户即将到来的事件（例如网络研讨会、预约）。如果没有收到推送，您可以发送包含日期、时间和加入链接或位置的短信。

### 系统停机警报

您正在通知用户意外停机。如果推送失败，回退到短信可确保用户实时得到通知。

### 账单通知

账单即将到期。您发送推送提醒。如果在 24 小时内没有收到，发送短信作为二次通知。

### 限时促销通知

限时促销开始。推送立即警告用户。如果推送未送达，您可以发送包含促销详情和购物链接的短信。

根据消息的紧急性调整回退逻辑。并非所有通知都需要短信，但关键通知受益于多渠道投递。

***

<Info>
  需要帮助？

  与我们的支持团队聊天或发送邮件至 `support@onesignal.com`

  请包含以下信息：

  * 您遇到的问题详情以及复现步骤（如有）
  * 您的 OneSignal 应用 ID
  * 外部 ID 或订阅 ID（如适用）
  * 您在 OneSignal 控制台中测试的消息 URL（如适用）
  * 任何相关的[日志或错误信息](/docs/cn/capturing-a-debug-log)

  我们很乐意为您提供帮助！
</Info>

***
