免打扰

免打扰:IMKit 以组件 + 数据源/回调的方式提供 UI 能力;本页聚焦该功能在组件层的接入点与配置。

适用场景​

  • 需要在现成会话页/会话列表上扩展功能
  • 需要确认功能对应的组件与 props/events

前置条件​

  • 已导入 ImpIaaSIMKit
  • 已完成 IMLib 初始化与连接
  • 宿主容器可挂载 UIView

rev28 契约状态​

已实现 / 部分覆盖

rev28 已冻结 IMKit features 8 组件与 Swift/ObjC 绑定;本页覆盖信息托管/群管理/联系人/多选/转发/引用的契约接入,未覆盖的特别关注/搜索用户等仍按能力边界说明。

组件:LocalNotificationCenter​

本地通知:应用在后台/前台收到消息时按会话策略显示本地通知

契约项内容
Propsenabled:Bool foregroundEnabled:Bool conversationPolicies:[String:Bool]
EventswillPresent(message) didTap(conversation)
Behaviors后台收到消息发 UNNotificationRequest(标题=发送者,正文=摘要);前台按 foregroundEnabled 决定是否横幅;按会话静音策略过滤;点击通知回调会话

真实签名(bindings.ios.imkit.features)​

语言签名
SwiftIMPLocalNotificationCenter.shared
Objective-CIMPOSLocalNotificationCenter.shared

Swift 接入示例​

Swift
let notificationCenter = IMPLocalNotificationCenter.shared

Objective-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 过滤可近似但配置面缺失

相关错误码​

错误码名称含义处理
1001INVALID_PARAMETER参数错误修正参数/权限后重试
1002INVALID_TOKENToken 无效或已过期修正参数/权限后重试
1007MESSAGE_TOO_LARGE消息体过大(上限 5KB)修正参数/权限后重试
1009GROUP_MUTED你已被禁言修正参数/权限后重试
1010SENSITIVE_WORD内容包含敏感词修正参数/权限后重试
3001SDK_NOT_CONNECTED长连接未就绪可重试(退避)
3002SDK_TIMEOUT请求超时可重试(退避)
3003SDK_NETWORK_ERROR网络错误可重试(退避)

相关页面​