Skip to main content
高级功能为开发者提供了扩展 WuKongIM Android SDK 的能力,包括自定义消息类型、消息扩展、消息回执、消息编辑和消息回复等企业级功能。
在 WuKongIM 中所有的消息类型都是自定义消息

自定义消息

自定义普通消息

下面我们以名片消息举例,展示如何创建自定义消息类型。

第一步:定义消息

定义消息对象并继承 WKMessageContent 并在构造方法中指定消息类型。
SDK 内置消息类型可通过 WKMsgContentType 查看
注意:自定义消息对象必须提供无参数的构造方法

第二步:编码和解码

我们需要将 uidnameavatar 三个字段信息发送给对方,最终传递的消息内容为:
重写 WKMessageContentencodeMsg 方法开始编码:
重写 WKMessageContentdecodeMsg 方法开始解码:
解码和编码消息时无需将 type 字段考虑其中,SDK 内部会自动处理
如果您想控制该自定义消息在获取时显示的内容可重写 getDisplayContent 方法:
如果你想在全局搜索时能搜索到该类型的消息,可重写 getSearchableWord 方法:

第三步:注册消息

通过这三步自定义普通消息就已完成。在收到消息时 WKMsg 中的 type 为 3 就表示该消息是名片消息,其中 baseContentMsgModel 则为自定义的 WKCardContent,这时可将 baseContentMsgModel 强转为 WKCardContent 并渲染到UI上。
完整代码参考:名片消息

完整名片消息实现示例

自定义附件消息

我们在发送消息的时候有时需发送带附件的消息。WuKongIM 也提供自定义附件消息,自定义附件消息和普通消息区别不大。下面我们以地理位置消息举例。

第一步:定义消息

值得注意的是自定义附件消息需继承 WKMediaMessageContent 而不是 WKMessageContent
WKMediaMessageContent 提供了 urllocalPath 字段,自定义消息无需再定义网络地址和本地地址字段

第二步:编码和解码

我们需要将 longitudelatitudeaddressurl 信息发送给对方,最终传递的消息内容为:
重写 WKMessageContentencodeMsg 方法开始编码:
编码消息可以写入 localPath 本地字段,SDK 在保存完消息时发送给对方的消息是不包含该字段的
重写 WKMessageContentdecodeMsg 方法开始解码:
在解码消息时如果是解码本地字段需判断该字段是否存在,因为收到的消息并没有本地字段。如 localPath 在收到消息时是没有的

第三步:注册消息

完整位置消息实现示例

消息扩展

随着业务的发展应用在聊天中的功能也日益增多,为了满足绝大部分的需求 WuKongIM 中增加了消息扩展功能。消息扩展分 本地扩展远程扩展,本地扩展只针对 app 本地使用卸载 app 后将丢失,远程扩展是服务器保存卸载重装后数据将恢复。

本地扩展

本地扩展就是消息对象 WKMsg 中的 localExtraMap 字段。
更新成功后 SDK 会触发刷新消息回调

远程扩展

远程扩展就是消息对象 WKMsg 中的 remoteExtra 字段。
更新成功后 SDK 会触发刷新消息回调

数据结构说明

消息扩展管理示例

消息已读未读

消息的已读未读又称消息回执。消息回执功能可通过 setting 进行设置。
当登录用户浏览过对方发送的消息时,如果对方开启了消息回执这时需将查看过的消息上传到服务器标记该消息已读。当对方或者自己上传过已读消息这时服务器会下发同步消息扩展的 cmd(命令)消息 syncMessageExtra,此时需同步最新消息扩展保存到 SDK 中。

消息回执管理示例

消息编辑

当我们给对方发送消息发现发送内容有错误时,这时无需撤回重发只需要将消息编辑即可。

设置编辑内容

更改 SDK 消息编辑内容后需将编辑后的内容上传到服务器,则需要监听上传消息扩展。

监听上传消息扩展

消息编辑管理示例

消息回复

在聊天中如果消息过多,发送消息回复就会显得消息很乱无章可循。这时就需要对某条消息进行特定的回复,即消息回复。 在发送消息时,只需将消息正文 WKMessageContent 中的 WKReply 对象赋值就能达到消息回复效果。

WKReply 对象核心字段

消息回复管理示例

消息回应(点赞)

保存消息回应

同一个用户对同一条消息只能做出一条回应。重复进行消息不同 emoji 的回应会做为修改回应,重复进行相同 emoji 的回应则做为删除回应。SDK 更新消息回应后会触发消息刷新的事件。app 需监听此事件并对 UI 进行刷新。

获取消息回应

数据结构说明

消息回应管理示例

下一步

提醒管理

回到提醒管理功能

数据源配置

回到数据源配置

消息管理

回到消息管理功能

基础功能

回到基础功能