免打扰
免打扰:IMKit 以组件 + 数据源/回调的方式提供 UI 能力;本页聚焦该功能在组件层的接入点与配置。
适用场景
- 需要在现成会话页/会话列表上扩展功能
- 需要确认功能对应的组件与 props/events
前置条件
- 已导入 ImpIaaSIMKit
- 已完成 IMLib 初始化与连接
- 宿主容器可挂载 UIView
rev28 契约状态
已实现 / 部分覆盖
rev28 已冻结 IMKit features 8 组件与 Swift/ObjC 绑定;本页覆盖信息托管/群管理/联系人/多选/转发/引用的契约接入,未覆盖的特别关注/搜索用户等仍按能力边界说明。
组件:LocalNotificationCenter
本地通知:应用在后台/前台收到消息时按会话策略显示本地通知
| 契约项 | 内容 |
|---|---|
| Props | enabled:Bool foregroundEnabled:Bool conversationPolicies:[String:Bool] |
| Events | willPresent(message) didTap(conversation) |
| Behaviors | 后台收到消息发 UNNotificationRequest(标题=发送者,正文=摘要);前台按 foregroundEnabled 决定是否横幅;按会话静音策略过滤;点击通知回调会话 |
真实签名(bindings.ios.imkit.features)
| 语言 | 签名 |
|---|---|
| Swift | IMPLocalNotificationCenter.shared |
| Objective-C | IMPOSLocalNotificationCenter.shared |
Swift 接入示例
Swift
let notificationCenter = IMPLocalNotificationCenter.sharedObjective-C 接入示例
Objective-C
IMPOSLocalNotificationCenter *notificationCenter = IMPOSLocalNotificationCenter.shared;注入方式与回退策略
- LocalNotificationCenter.shared 统一管理本地通知开关、前台横幅与会话免打扰策略;权限申请仍由宿主 UNUserNotificationCenter 完成。
- 前台收到消息时按会话策略决定 banner/sound;免打扰会话只更新角标不弹横幅。
- 系统权限被拒绝时降级为应用内提示,不阻断消息接收。
与融云对应页 / 差异
| 项 | 内容 |
|---|---|
| 融云页面 | ios-im-uikit/features/do-not-disturb(免打扰) |
| 融云接口状态 | 部分覆盖(主路径可用,子能力缺失) |
| 我方对应 | setConversationNotificationLevel、ChatListViewModel |
| 差异说明 | uikit-surface 仅类名,无 toggleNotification:/setNotificationLevel:forChatModels:;全局免打扰需 IMLib 补;UI 过滤可近似但配置面缺失 |
相关错误码
| 错误码 | 名称 | 含义 | 处理 |
|---|---|---|---|
1001 | INVALID_PARAMETER | 参数错误 | 修正参数/权限后重试 |
1002 | INVALID_TOKEN | Token 无效或已过期 | 修正参数/权限后重试 |
1007 | MESSAGE_TOO_LARGE | 消息体过大(上限 5KB) | 修正参数/权限后重试 |
1009 | GROUP_MUTED | 你已被禁言 | 修正参数/权限后重试 |
1010 | SENSITIVE_WORD | 内容包含敏感词 | 修正参数/权限后重试 |
3001 | SDK_NOT_CONNECTED | 长连接未就绪 | 可重试(退避) |
3002 | SDK_TIMEOUT | 请求超时 | 可重试(退避) |
3003 | SDK_NETWORK_ERROR | 网络错误 | 可重试(退避) |