跳转到主要内容
Android 通知类别(又称通知渠道)在 Android 8.0 (Oreo) 中引入,旨在为用户提供更大的控制权,决定如何接收您应用的通知。这允许您对通知进行分类,并定义不同的体验,如显示行为、声音、振动、徽章和锁屏可见性。 例如,如果您有突发新闻通知,您可以为它们创建一个类别,并设置”紧急”重要性和自定义声音,以确保它们显著显示,而不是像不太重要的通知那样可能被静音或使用默认声音。 OneSignal 使您能够直接在仪表板中轻松创建和管理这些类别。或者,您也可以在应用中以编程方式定义类别。请参阅 Android 创建通知渠道指南
OneSignal 的 Android 通知类别适用于 Google Android、华为 Android 和 Amazon FireOS。
Android 设备设置中显示的通知类别

默认通知类别

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

杂项

在未设置类别时使用。
  • 重要性: High
  • 声音: Default
  • 振动: Default
  • 徽章: Enabled
  • 锁屏: Private

已恢复

在应用被强制退出并重新打开时使用。如果应用被强制退出时通知中心有推送通知,它们将从设备中移除。重新打开应用会重新创建(恢复)这些通知。OneSignal SDK 会自动将类别设置为”已恢复”,并使用以下设置来防止多条恢复通知产生不必要的声音和弹窗。
  • 重要性: Low
  • 声音: Off
  • 振动: Off
  • 徽章: Disabled
  • 锁屏: Private
如果您始终使用自定义类别发送推送通知,“杂项”渠道将不会出现在用户设备上。“已恢复”渠道将始终出现,以处理强制关闭后恢复的通知。

华为特定行为

在华为设备上,OneSignal 不会设置默认类别。如果您不包含类别,华为将默认应用 High 重要性。 对于华为设备上的徽章控制,您还可以在 创建消息 API 中使用专用的华为徽章参数(huawei_badge_classhuawei_badge_set_numhuawei_badge_add_num)。详情请参阅徽章

在 OneSignal 中创建 Android 通知类别

开始之前,请确保您已配置了带有 Android 平台的 OneSignal 应用
  1. 在 OneSignal 仪表板中转到 Settings > Push & In-App > Android Notification Channels
  2. 点击 Add Group 来组织您的类别(例如”新闻更新”、“社交活动”)。
  3. 在组内点击 Add Channel 来创建新类别。
OneSignal 仪表板中显示添加 Android 通知类别的位置
您需要定义以下内容:

名称

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

描述

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

重要性

控制通知的可见性和干扰性:
  • Low: 静音,无警报
  • Medium: 无声音/振动,最小视觉干扰
  • High: 播放声音或振动,无屏幕弹窗
  • Urgent: 播放声音并显示为浮动通知或横幅式通知

声音

  • Off: 无声音
  • Default: 设备的默认通知铃声
  • Custom: 上传并引用自定义声音(无文件扩展名)。 示例:alert_beep(不是 alert_beep.wav

通知声音

为通知添加自定义声音的完整设置说明。

振动

  • 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: 锁屏上不显示通知
创建类别后,您就可以在通知中使用它。

更新类别

设备收到来自某个类别的通知后,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 字段设置为代码中定义的名称。
推送通知编辑器中的 Android 类别选择下拉菜单

使用 REST API 发送

如果您在 OneSignal 仪表板中创建了类别,请在 创建消息 API 请求中使用 android_channel_id。您可以在 Android 类别设置屏幕中找到渠道 ID。
Android 类别设置屏幕中的渠道 ID 字段
如果使用您自己以编程方式创建的 Android 渠道,请在 创建消息 API 请求中使用 existing_android_channel_id 参数,并设置为代码中定义的名称。

常见问题

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

不可以。OneSignal 不在类别上设置 setBypassDnd。要覆盖 DND,请以编程方式创建您自己的渠道并启用此设置。请参阅 setBypassDnd

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

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

为什么我的 Android 类别不工作?

有几个原因可能导致您的 Android 类别无法按预期工作。要进行故障排除,请检查以下内容:
  • 什么不工作?
    • 声音文件是否没有播放?
    • 是否未在设备上显示?
    • 您是否在 Android 通知设置中看不到类别?
  • 类别是如何创建的?
    • 如果在 OneSignal 仪表板中创建,请确保设置按您的预期定义。
    • 如果在应用中以编程方式创建,请检查您的代码。请参阅 Android 创建通知渠道指南
  • 检查类别设置:
    • 确保设置按您的预期定义。
    • 声音文件是否被正确引用?请参阅上面的声音部分。
    • 发送消息时是否正确引用了类别名称或 ID?
  • 您是否在发送通知后更新了设置?
    • 如果您在发送通知后更新了设置,Android 不会将这些更新应用到您的设备。请参阅上面的更新类别
  • 检查 OneSignal SDK 初始化:
    • 确保 OneSignal 在 Application 类中初始化,而不是在 Activity 中。请参阅 Android SDK 设置
仍需帮助?我们随时为您提供协助!请发送电子邮件至 support@onesignal.com,并提供上述信息,包括:
  • 如果在应用中以编程方式创建,请提供 Android 类别代码
  • 您的 OneSignal 仪表板中出现问题的消息的 URL
我们会尽快为您提供帮助!

相关页面

通知声音

为 Android、iOS 及其他平台设置自定义通知声音。

徽章

跨平台配置应用图标上的徽章计数。

Android SDK 设置

在您的应用中安装并初始化 OneSignal Android SDK。

创建消息 API

使用 REST API 以编程方式发送推送通知。