iOS能否像系统日历应用及Android一样创建多通知通道?
iOS有和Android通知通道完全对等的实现方案,名为通知类别(UNNotificationCategory),完全支持按业务分类单独开关通知、自定义不同类别的提示音等配置,你观察到的iOS日历的分类通知设置就是基于这个能力实现的。
具体实现逻辑如下:
- 提前注册通知分类:App启动阶段需要提前声明所有业务用到的通知分类,给每个分类分配唯一的标识ID,Swift代码示例:
import UserNotifications // 定义两个不同业务场景的通知分类,对应Android的不同channel let eventNoticeCategory = UNNotificationCategory(identifier: "event_notice", actions: [], intentIdentifiers: [], options: []) let systemRemindCategory = UNNotificationCategory(identifier: "system_remind", actions: [], intentIdentifiers: [], options: []) // 将分类注册到通知中心 UNUserNotificationCenter.current().setNotificationCategories([eventNoticeCategory, systemRemindCategory])
- 推送关联对应分类:发送本地通知时,给
UNMutableNotificationContent的categoryIdentifier属性赋值对应分类ID即可;发送远程APNs推送时,在推送payload中添加"category": "event_notice"字段指定对应分类即可。 - 用户侧设置入口:用户进入系统「设置-通知-你的App」页面后下滑,就能看到所有已注册的通知分类,每个分类支持单独调整通知开关、提示音、是否展示徽章、是否出现在通知中心/锁屏等配置,和Android通知通道的用户操作逻辑基本一致。
补充注意事项:
iOS的通知类别和Android通道存在两个主要差异:
- 不支持运行时动态新增分类,所有需要用到的分类必须在App启动时提前注册完成
- App侧无法主动给不同分类设置默认提示音,分类的默认通知效果需要用户手动在系统设置中调整,你也可以在推送payload中指定
sound字段来为单条推送设置特定提示音。
内容的提问来源于stack exchange,提问作者ChanX
相关产品推荐
相关产品推荐

