> ## 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 在 iOS、Android、Huawei 和 Amazon 上设置移动推送通知的端到端清单。

推送通知在用户未主动使用您的应用时重新吸引他们。它们可以显示文本和丰富内容，如图像、按钮和声音。

<Frame caption="iOS 和 Android 上的推送通知示例。">
  <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/d6ba464616e546aaf62a5bda18adb4422d036815db4b2454e8a8b6a4dcf67706-channel-setup-mobile-push.jpg?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=63d1840679897262b47a004375a1bb33" alt="iOS 和 Android 移动推送通知示例，展示丰富内容" width="1280" height="720" data-path="images/docs/d6ba464616e546aaf62a5bda18adb4422d036815db4b2454e8a8b6a4dcf67706-channel-setup-mobile-push.jpg" />
</Frame>

要在移动设备上使用推送功能：

* 用户必须安装您的移动应用程序
* 您必须配置正确的平台凭据（Android 的 FCM、iOS 的 APNs、Huawei 的 HMS、Amazon 的 ADM）
* 用户必须授予接收通知的权限

本指南将指导您完成从 SDK 设置到发送个性化推送消息的每一步。

***

## SDK 设置和迁移

将 OneSignal SDK 集成到您的应用中以注册设备并启用推送消息传递。如果您正在从其他提供商迁移，OneSignal 支持从 Firebase、Airship、Braze 等迁移。

<Columns cols={2}>
  <Card title="移动 SDK 设置" icon="mobile" href="./mobile-sdk-setup">
    将 OneSignal SDK 集成到您的应用中以注册设备并启用推送消息传递。
  </Card>

  <Card title="从其他提供商迁移" icon="arrow-right-arrow-left" href="./migrating-to-onesignal">
    从 Firebase、Airship、Braze 或其他推送提供商迁移。
  </Card>
</Columns>

***

## 推送权限提示

移动平台要求用户在接收推送通知之前选择加入。Apple 的[人机界面指南](https://developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/notifications)建议描述您想要发送的信息类型，并为用户提供明确的选择加入或退出方式。

您可以使用 OneSignal 的应用内消息构建预权限提示，在触发系统提示之前向用户解释价值。

<Frame caption="使用应用内消息构建的自定义预权限推送提示。">
  <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/mobile-push-setup-ask-users-for-permission-to-send-push.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=aa31e67179d80c4b99c2d86102091d60" alt="OneSignal 应用内消息用作推送通知的预权限提示" width="2136" height="1338" data-path="images/push/mobile-push-setup-ask-users-for-permission-to-send-push.jpg" />
</Frame>

<Columns cols={2}>
  <Card title="请求推送权限" icon="bell" href="./prompt-for-push-permissions">
    使用应用内消息构建自定义的预权限提示。
  </Card>

  <Card title="移动 SDK 参考" icon="code" href="./mobile-sdk-reference">
    在 SDK 中以编程方式触发权限请求。
  </Card>

  <Card title="iOS 临时推送" icon="apple" href="./ios-provisional-push-notifications">
    在提示之前在通知中心显示静默通知。
  </Card>
</Columns>

***

## 用户和订阅

SDK 激活后，OneSignal 会在用户打开您的应用时自动创建用户和订阅记录。

移动订阅在用户执行以下操作时创建：

* 在设备上首次打开应用
* 卸载并重新安装应用，然后再次打开应用

每个设备创建单独的订阅。订阅在您通过 `OneSignal.login` 为其分配[外部 ID](./users#external-id) 之前保持匿名。

<Frame caption="OneSignal 控制台：受众 > 用户">
  <img src="https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/users-page.png?fit=max&auto=format&n=ciRrThfP6xMpI7GY&q=85&s=8992ef97cf3c9f336078f9dbf8a6374e" alt="OneSignal 控制台用户页面，显示带有订阅详情的用户列表" width="2316" height="858" data-path="images/dashboard/users-page.png" />
</Frame>

<Columns cols={2}>
  <Card title="用户" icon="users" href="./users">
    管理用户、分配外部 ID，了解匿名用户与已识别用户。
  </Card>

  <Card title="订阅" icon="address-book" href="./subscriptions">
    订阅如何跨设备和渠道创建和管理。
  </Card>

  <Card title="细分" icon="chart-pie" href="./segmentation">
    将用户分组为动态细分以进行定向消息传递。
  </Card>
</Columns>

***

## 设计推送通知

制作有效的推送通知不仅仅是写文本。观看如何让每条推送通知发挥最大效果，然后探索以下设计元素。

<Frame caption="如何让每条推送通知发挥最大效果">
  <iframe width="560" height="315" src="https://www.youtube.com/embed/mlXEsZA2qlM?si=tIstWJYNFOzrtMR5" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />
</Frame>

<Frame caption="iOS 和 Android 上移动推送通知的结构。">
  <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/ios-and-android-mobile-push-expanded.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=5f0a3048b1b945ce1c960807992e4c74" alt="显示 iOS 和 Android 推送通知结构的注释图" width="1467" height="726" data-path="images/push/ios-and-android-mobile-push-expanded.jpg" />
</Frame>

1. [标题](./push#title)：吸引注意力的标题（建议：低于 50 个字符）
2. [消息](./push#message)：主要通知内容（建议：低于 120 个字符）
3. [图标](./notification-icons)：您的品牌图标或通知特定图像
4. [大型图像](./push#image)：引人注目的视觉内容
5. [操作按钮](./action-buttons)：行动召唤按钮
6. 接收推送时的时间戳
7. [应用名称](./push#app-name)：您应用的名称

<Columns cols={2}>
  <Card title="推送概述" icon="bell" href="./push">
    推送通知创建、选项和投递行为的完整概述。
  </Card>

  <Card title="模板" icon="clone" href="./templates">
    使用可重复使用的模板节省时间，保持消息一致性。
  </Card>
</Columns>

### 个性化和本地化

观看如何将普通推送通知转变为高性能消息，然后探索以下个性化选项。

<Frame caption="如何将普通推送通知转变为高性能消息">
  <iframe width="560" height="315" src="https://www.youtube.com/embed/Rf6N_rezxuk?si=8t2pd1bxKeN5ofq-" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />
</Frame>

<Columns cols={2}>
  <Card title="消息个性化" icon="wand-magic-sparkles" href="./message-personalization">
    插入动态变量（如姓名或偏好）来定制消息。
  </Card>

  <Card title="多语言消息" icon="language" href="./multi-language-messaging">
    自动以每个用户的首选语言投递消息。
  </Card>
</Columns>

***

## 配置推送行为

控制您的通知在发送后的行为，包括时间、显示设置和用户交互。

### 投递、显示和关闭设置

<Columns cols={2}>
  <Card title="限速" icon="gauge-high" href="./throttling">
    控制大量受众的通知投递速度。
  </Card>

  <Card title="频率上限" icon="hand" href="./frequency-capping">
    设置限制以防止向同一用户过度发送通知。
  </Card>

  <Card title="生存时间 (TTL)" icon="clock" href="./push#time-to-live-ttl">
    定义在设备离线时推送服务保留消息的时间。
  </Card>

  <Card title="合并 ID" icon="layer-group" href="./push#collapse-id-mobile-push">
    用更新的消息替换之前的消息以减少通知杂乱。
  </Card>

  <Card title="Android 通知类别" icon="android" href="./android-notification-categories">
    控制重要性级别（横幅、静音）和其他显示方面。
  </Card>

  <Card title="iOS 专注模式和中断级别" icon="apple" href="./ios-focus-modes-and-interruption-levels">
    控制 iOS 的优先级（被动、时间敏感）。
  </Card>

  <Card title="通知声音" icon="volume-high" href="./notification-sounds">
    为每个平台配置通知音频。
  </Card>

  <Card title="角标" icon="circle-1" href="./badges">
    管理 iOS 上的应用图标角标计数行为。
  </Card>
</Columns>

### 数据和后台通知

在推送负载中包含自定义数据，您的应用可以在不显示可见通知的情况下处理这些数据。

<Columns cols={2}>
  <Card title="数据和后台通知" icon="database" href="./data-notifications">
    发送不带视觉通知的自定义负载。
  </Card>

  <Card title="附加数据" icon="brackets-curly" href="./push#additional-data">
    将键值数据附加到推送负载中以供应用内处理。
  </Card>
</Columns>

### 点击行为和深度链接

控制用户点击通知时发生的情况。

<Columns cols={2}>
  <Card title="URL、链接和深度链接" icon="link" href="./links">
    使用深度链接和跟踪 URL 将用户路由到相关内容或页面。
  </Card>

  <Card title="深度链接" icon="arrow-up-right-from-square" href="./deep-linking">
    特定平台的深度链接实现详情。
  </Card>

  <Card title="操作按钮" icon="hand-pointer" href="./action-buttons">
    让用户从您的通知中立即采取行动。
  </Card>

  <Card title="通知事件观察者" icon="code" href="./mobile-sdk-reference#push-notification-events">
    监听点击事件并使用自定义代码触发应用内行为。
  </Card>
</Columns>

***

## 分析和故障排除

测量通知性能并解决常见的投递问题。

<Columns cols={2}>
  <Card title="推送消息报告" icon="chart-line" href="./push-notification-message-reports">
    查看每条消息的投递、打开率和点击率指标。
  </Card>

  <Card title="分析概述" icon="chart-bar" href="./analytics-overview">
    探索跨渠道的参与度和用户行为指标。
  </Card>

  <Card title="通知未显示或延迟" icon="circle-exclamation" href="./notifications-show-successful-but-are-not-being-shown">
    消息未在设备上显示的故障排除清单。
  </Card>

  <Card title="通知图像未显示" icon="image" href="./notification-images-not-showing">
    修复各平台的图像渲染问题。
  </Card>

  <Card title="重复通知" icon="copy" href="./duplicated-notifications">
    排查为什么显示重复通知。
  </Card>
</Columns>

***

## 下一步

<Columns cols={2}>
  <Card title="A/B 测试" icon="flask" href="./ab-testing">
    通过实验优化消息，找到推动参与度的因素。
  </Card>

  <Card title="旅程" icon="route" href="./journeys-overview">
    构建由用户行为触发的自动化多步骤消息流程。
  </Card>

  <Card title="标签" icon="tags" href="./add-user-data-tags">
    添加用户级数据以进行个性化和定向。
  </Card>

  <Card title="应用内消息" icon="window-maximize" href="./in-app-messages-setup">
    在您的应用内以丰富的互动消息触达用户。
  </Card>
</Columns>

***

## 常见问题

### 用户需要选择加入才能接收推送通知吗？

是的。iOS 和 Android 都要求用户在接收推送通知之前授予权限。在 iOS 上，您必须显示系统提示。在 Android 13+ 上，需要 `POST_NOTIFICATIONS` 权限。在触发系统对话框之前，使用[预权限提示](./prompt-for-push-permissions)向用户解释价值。

### FCM、APNs、HMS 和 ADM 是什么？

这些是特定平台的推送投递服务。**FCM**（Firebase Cloud Messaging）投递到 Android 和 Web。**APNs**（Apple 推送通知服务）投递到 iOS 和 macOS。**HMS**（华为移动服务）投递到华为设备。**ADM**（Amazon Device Messaging）投递到 Amazon Fire 设备。您在 [SDK 设置](./mobile-sdk-setup)期间在 OneSignal 控制台中为每个服务配置凭据。

### 为什么我的推送通知不显示？

常见原因包括平台凭据缺失或过期、用户未授予权限，或设备级设置（如勿扰模式或专注模式）。请参阅[通知未显示或延迟](./notifications-show-successful-but-are-not-being-shown)获取完整的故障排除清单。

### 我可以在不显示可见通知的情况下发送推送通知吗？

可以。使用[数据和后台通知](./data-notifications)发送您的应用静默处理的自定义负载。这些对于触发后台同步、更新本地数据或刷新内容而不打扰用户非常有用。
