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

# Android 通知类别

> 在 OneSignal 中设置 Android 通知类别（渠道），以提高用户对推送通知的控制和自定义能力。

Android 通知类别（又称通知渠道）在 Android 8.0 (Oreo) 中引入，旨在为用户提供更大的控制权，决定如何接收您应用的通知。这允许您对通知进行分类，并定义不同的体验，如显示行为、声音、振动、徽章和锁屏可见性。

例如，如果您有突发新闻通知，您可以为它们创建一个类别，并设置"紧急"重要性和自定义声音，以确保它们显著显示，而不是像不太重要的通知那样可能被静音或使用默认声音。

OneSignal 使您能够直接在仪表板中轻松创建和管理这些类别。或者，您也可以在应用中以编程方式定义类别。请参阅 [Android 创建通知渠道指南](https://developer.android.com/develop/ui/views/notifications/channels)。

<Note>
  OneSignal 的 Android 通知类别适用于 Google Android、华为 Android 和 Amazon FireOS。
</Note>

<Frame caption="设备上应用通知类别的示例">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/abd709d-Screenshot_20220201-154501_Settings.jpg?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=97f84df6db5d90943808f25fccf182a5" alt="Android 设备设置中显示的通知类别" width="500" height="1111" data-path="images/docs/abd709d-Screenshot_20220201-154501_Settings.jpg" />
</Frame>

***

## 默认通知类别

OneSignal 自动创建两个默认类别：

### 杂项

在未设置类别时使用。

* **重要性：** High
* **声音：** Default
* **振动：** Default
* **徽章：** Enabled
* **锁屏：** Private

### 已恢复

在应用被强制退出并重新打开时使用。如果应用被强制退出时通知中心有推送通知，它们将从设备中移除。重新打开应用会重新创建（恢复）这些通知。OneSignal SDK 会自动将类别设置为"已恢复"，并使用以下设置来防止多条恢复通知产生不必要的声音和弹窗。

* **重要性：** Low
* **声音：** Off
* **振动：** Off
* **徽章：** Disabled
* **锁屏：** Private

<Note>
  如果您始终使用自定义类别发送推送通知，"杂项"渠道将不会出现在用户设备上。"已恢复"渠道将始终出现，以处理强制关闭后恢复的通知。
</Note>

### 华为特定行为

在华为设备上，OneSignal **不会**设置默认类别。如果您不包含类别，华为将默认应用 **High** 重要性。

对于华为设备上的徽章控制，您还可以在 [创建消息](/reference/create-message) API 中使用专用的华为徽章参数（`huawei_badge_class`、`huawei_badge_set_num`、`huawei_badge_add_num`）。详情请参阅[徽章](./badges#huawei-badges)。

***

## 在 OneSignal 中创建 Android 通知类别

开始之前，请确保您已[配置了带有 Android 平台的 OneSignal 应用](./android-sdk-setup)。

1. 在 OneSignal 仪表板中转到 **Settings > Push & In-App > Android Notification Channels**。
2. 点击 **Add Group** 来组织您的类别（例如"新闻更新"、"社交活动"）。
3. 在组内点击 **Add Channel** 来创建新类别。

<Frame caption="在 OneSignal 中添加 Android 类别的位置">
  <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/android-notifications-categories-create-android-onesignal.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=e3ca711dd7ad860a97de9aa3f3d7109b" alt="OneSignal 仪表板中显示添加 Android 通知类别的位置" width="2616" height="1264" data-path="images/push/android-notifications-categories-create-android-onesignal.jpg" />
</Frame>

您需要定义以下内容：

### 名称

*用户可见。* 保持清晰和描述性。

### 描述

*用户可见。* 简要说明此类别将处理的通知类型。

### 重要性

控制通知的可见性和干扰性：

* **Low：** 静音，无警报
* **Medium：** 无声音/振动，最小视觉干扰
* **High：** 播放声音或振动，无屏幕弹窗
* **Urgent：** 播放声音并显示为浮动通知或横幅式通知

### 声音

* **Off：** 无声音
* **Default：** 设备的默认通知铃声
* **Custom：** 上传并引用自定义声音（无文件扩展名）。
  示例：`alert_beep`（不是 `alert_beep.wav`）

<Card title="通知声音" icon="volume-high" href="./notification-sounds">
  为通知添加自定义声音的完整设置说明。
</Card>

### 振动

* **Off：** 无振动
* **Default：** 使用设备的振动模式
* **Custom：** 使用模式（以毫秒为单位）定义您自己的。
  示例：`0, 300, 500, 300` → 等待 0ms，振动 300ms，暂停 500ms，振动 300ms。

### LED 颜色

某些 Android 设备支持 LED 指示器：

* **Off：** 无 LED
* **Default：** 设备默认
* **Custom：** ARGB 十六进制值（例如，`FF0000FF` 代表蓝色）

### 徽章

在应用图标上显示徽章计数：

* **Enabled：** 显示徽章
* **Disabled：** 不显示徽章

### 锁屏可见性

* **Public：** 显示完整内容
* **Private：** 仅显示应用名称，隐藏内容
* **Secret：** 锁屏上不显示通知

<Check>
  创建类别后，您就可以在通知中使用它。
</Check>

***

## 更新类别

设备收到来自某个类别的通知后，Android 会锁定该类别的行为。**对重要性、声音、振动或其他设置的更改不会追溯应用**。例如，如果您发送一个使用"High"重要性和声音的类别的推送通知，然后将重要性更改为"Urgent"并使用不同的声音文件，则使用相同类别向同一设备发送的下一个推送通知将不会具有"Urgent"重要性或新声音。

**选项**：

* **更新行为：** 创建新类别。
* **测试更改：** 清除应用数据或卸载并重新安装应用。

您可以更新：

* 渠道名称（在 Android 设置中显示为"channel name"）
* 渠道组名称（在 Android 设置中显示为"channel group name"）

当使用该类别接收到下一个通知时，这些更改将在 Android 的通知设置中生效。

***

## 删除类别

要从用户设备中移除已删除的类别：

1. 从 OneSignal 仪表板中删除类别。
2. 确保从通知中心清除所有通知。
3. 让用户：
   * 将应用放置在后台 60 秒以上
   * 再次打开它（触发 SDK 同步）

SDK 将重新同步并从 Android 设置中移除已删除的类别。

***

## 将类别添加到通知

根据您创建 Android 类别的方式以及发送消息的方式，以下是您可以在推送通知中引用类别的方法。

### 从 OneSignal 仪表板发送

1. 在您的模板或推送消息编辑器中，导航到 Android 设置。
2. 在 **Category** 下，如果在 OneSignal 仪表板中创建，请选择您的类别，或者如果在应用中以编程方式创建，请选择 **(Created in App)**。
   * 如果以编程方式创建，还要将 **Existing Channel** 字段设置为代码中定义的名称。

<Frame caption="在消息编辑器中选择 Android 类别的位置">
  <img src="https://mintcdn.com/onesignal/qlRVasrK03Npyvy1/images/dashboard/category-selection.png?fit=max&auto=format&n=qlRVasrK03Npyvy1&q=85&s=612958a4fbcf7150a3e6e54aba917ed8" alt="推送通知编辑器中的 Android 类别选择下拉菜单" width="2036" height="1234" data-path="images/dashboard/category-selection.png" />
</Frame>

### 使用 REST API 发送

如果您在 OneSignal 仪表板中创建了类别，请在 [创建消息](/reference/push-notification) API 请求中使用 `android_channel_id`。您可以在 Android 类别设置屏幕中找到渠道 ID。

<Frame caption="在 Android 类别设置屏幕中查找渠道 ID">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/711520e6676b87a1007fb262c97fa2608003322fada1fa4601dab8d4d154afa8-Screenshot_2024-11-12_at_9.31.05_AM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=85d8ab273f8828e666ac7f79740ceda4" alt="Android 类别设置屏幕中的渠道 ID 字段" width="878" height="1038" data-path="images/docs/711520e6676b87a1007fb262c97fa2608003322fada1fa4601dab8d4d154afa8-Screenshot_2024-11-12_at_9.31.05_AM.png" />
</Frame>

如果使用您自己以编程方式创建的 Android 渠道，请在 [创建消息](/reference/push-notification) API 请求中使用 `existing_android_channel_id` 参数，并设置为代码中定义的名称。

***

## 常见问题

### 类别可以在勿扰 (DND) 模式下播放声音吗？

不可以。OneSignal 不在类别上设置 `setBypassDnd`。要覆盖 DND，请以编程方式创建您自己的渠道并启用此设置。请参阅 [setBypassDnd](https://developer.android.com/reference/android/app/NotificationChannel#setBypassDnd\(boolean\))。

### 我可以本地化类别名称或描述吗？

不可以。OneSignal 不支持类别的多种语言。要支持本地化，请定义您自己的 Android 渠道，并在推送 API 请求中通过 `existing_android_channel_id` 引用它们。

### 为什么我的 Android 类别不工作？

有几个原因可能导致您的 Android 类别无法按预期工作。要进行故障排除，请检查以下内容：

* **什么不工作？**
  * 声音文件是否没有播放？
  * 是否未在设备上显示？
  * 您是否在 Android 通知设置中看不到类别？
* **类别是如何创建的？**
  * 如果在 OneSignal 仪表板中创建，请确保设置按您的预期定义。
  * 如果在应用中以编程方式创建，请检查您的代码。请参阅 [Android 创建通知渠道指南](https://developer.android.com/develop/ui/views/notifications/channels)。
* **检查类别设置：**
  * 确保设置按您的预期定义。
  * 声音文件是否被正确引用？请参阅上面的[声音](#sound)部分。
  * 发送消息时是否正确引用了类别名称或 ID？
* **您是否在发送通知后更新了设置？**
  * 如果您在发送通知后更新了设置，Android 不会将这些更新应用到您的设备。请参阅上面的[更新类别](#updating-categories)。
* **检查 OneSignal SDK 初始化：**
  * 确保 OneSignal 在 `Application` 类中初始化，而不是在 `Activity` 中。请参阅 [Android SDK 设置](./android-sdk-setup)。

<Info>
  仍需帮助？我们随时为您提供协助！请发送电子邮件至 `support@onesignal.com`，并提供上述信息，包括：

  * 如果在应用中以编程方式创建，请提供 Android 类别代码
  * 您的 OneSignal 仪表板中出现问题的消息的 URL

  我们会尽快为您提供帮助！
</Info>

***

## 相关页面

<Columns cols={2}>
  <Card title="通知声音" icon="volume-high" href="./notification-sounds">
    为 Android、iOS 及其他平台设置自定义通知声音。
  </Card>

  <Card title="徽章" icon="circle-1" href="./badges">
    跨平台配置应用图标上的徽章计数。
  </Card>

  <Card title="Android SDK 设置" icon="android" href="./android-sdk-setup">
    在您的应用中安装并初始化 OneSignal Android SDK。
  </Card>

  <Card title="创建消息 API" icon="code" href="/reference/create-message">
    使用 REST API 以编程方式发送推送通知。
  </Card>
</Columns>
