外观
消息类型与扩展
密信 IM 使用明确的消息类型描述内容。SDK 处理消息身份、状态与同步,UIKit 按类型渲染;自定义界面可以复用同样的数据能力。
常用类型
| 内容 | Flutter 类型 | 接入关注点 |
|---|---|---|
| 文本 | MixinImMessageType.text | 使用聊天控制器 sendText |
| 图片、语音、文件、视频 | image、voice、file、video | 上传附件后再发送,按需申请系统权限 |
| 用户名片 | card | 使用稳定用户 ID 与名称快照 |
| 位置 | location | 地图展示和定位授权由宿主配置 |
| 合并转发 | forward | 保留来源呈现,校验接收范围 |
| 通话记录 | call | 由通话模块产生与展示 |
| 智能体回复 | agent | 推理与业务决策由客户服务执行 |
| 群公告、系统事件 | groupNotice、system | 区分内容展示与管理权限 |
引用回复和群聊 @ 使用消息元数据中的稳定 ID 关联目标,显示名称随用户资料更新。
选择正确入口
普通聊天优先使用 MixinImChatController.sendText。已支持的类型化内容可以通过 sendContent 发送;宿主在聊天页之外发送类型化消息时,可使用 sdk.sendMessage,让消息流与会话摘要统一更新。
附件先上传再发送,流程见文件与媒体附件。通话记录用于展示结果,发起呼叫使用 Call SDK。
业务扩展
服务端扩展消息采用 x.<namespace>.<name> 命名。接入时完成服务端类型注册、内容字段定义、发送权限与客户端渲染配置。
同时定义列表摘要、点击动作、兼容展示与大小限制。打开业务卡片中的订单、工单或项目资料时,由业务服务校验当前账号权限。
Server API 的扩展消息入口与普通客户端聊天入口不同,见 服务端消息。
类型兼容与安全处理
客户端遇到无法识别的类型时,保留消息身份和协议值并展示兼容提示。消息内容作为数据解析,避免执行其中的 HTML 或脚本;撤回、删除和群治理使用各自的授权接口。
新类型上线需同时验证发送端、接收端、历史恢复、会话摘要与离线提示。平台能力差异见 兼容与版本。