数据模型与枚举参考 (Models & Enums)
QXJIMSDK 中所有模型均严格遵循 Swift 6 并发安全规范(实现 Codable、Sendable、Equatable,核心实体额外实现 Identifiable 以方便直接在 SwiftUI List / ForEach 中绑定)。
1. 核心枚举一览
| 枚举值 | 原始值 (Int32) | 说明 |
|---|
.iOS | 1 | iPhone 客户端 |
.android | 2 | Android 手机客户端 |
.windows | 3 | Windows 桌面端 |
.macOS | 4 | macOS 桌面端 |
.web | 5 | Web 浏览器端 (openIM.wasm) |
.miniWeb | 6 | 小程序端 |
.linux | 7 | Linux 桌面端 |
.androidPad | 8 | Android 平板端 |
.iPad | 9 | iPad 客户端 |
.admin | 10 | 管理后台系统发出的消息 |
.harmonyOS | 11 | 鸿蒙客户端 |
1.2 会话类型 (IMSessionType)
| 枚举值 | 原始值 (Int32) | 说明 |
|---|
.single | 1 | 单聊 (si_u1_u2) |
.writeGroup | 2 | 普通群聊(旧版扩散写,已废弃) |
.superGroup | 3 | 工作群/超大群(读扩散,sg_groupID) |
.notification | 4 | 系统通知会话 (sn_...) |
1.3 消息状态 (IMMessageStatus)
| 枚举值 | 原始值 (Int32) | 说明 |
|---|
.sending | 1 | 发送中 |
.sendSuccess | 2 | 发送成功 |
.sendFailed | 3 | 发送失败 |
.deleted | 4 | 已删除 |
.revoked | 5 | 已撤回 |
1.4 消息免打扰选项 (IMReceiveMessageOpt)
| 枚举值 | 原始值 (Int32) | 说明 |
|---|
.receive | 0 | 正常接收消息并离线推送 |
.notReceive | 1 | 拒收消息 |
.receiveNotNotify | 2 | 接收在线/离线同步消息,但不触发离线推送且不计入总未读数(免打扰) |
1.5 群成员角色 (IMGroupRoleLevel)
| 枚举值 | 原始值 (Int32) | 说明 |
|---|
.member | 20 | 普通群成员 |
.admin | 60 | 群管理员 |
.owner | 100 | 群主 |
2. Protobuf 包装器类型 (ProtobufValueWrapper)
在 OpenIM Go 核心层中,部分更新请求(如 SetConversation、SetGroupInfo、SetGroupMemberInfo、UpdateFriends、SetSelfInfo)使用 github.com/openimsdk/protocol/wrapperspb 区分“字段未传 (nil)”与“字段传零值 (false / "" / 0)”。
QXJIMSDK 的请求结构体(如 IMConversationSetRequest、IMSetGroupInfoRequest)已在 init 构造器中为您自动封装好 ProtobufValueWrapper,业务层直接传入普通 Swift 可选值(如 isPinned: true)即可,无需关心底层 JSON {"value": true} 结构。