自定义消息内容

野火IM内置了文本,图片,语言,视频等一系列的消息类型,但这远远不能满足客户各种各样的需要。我们需要一种机制来任意添加新的消息类型,满足以下几步就可以。一个好的办法就是搜索某一种消息比如文本消息,在工程中参考编写对应的代码。

0.0.1. Step 1 定义消息内容类型并注册

消息内容都有一个共同的基类MessageContent,自定义消息也需要继承这个类,并实现其中的方法(Android端自定义消息,需要注意:一定要包含一个无参构造函数),可以参考内置的消息类型。

需要注意的是MessagePayload有个pushContent字段。如果需要推送,请在这个字段中填上需要推送的内容。有一个pushData字段,可以为推送提供更多信息。有个searchableContent字段,填写消息的搜索内容,比如您有个很复杂的消息,然后需要它能被搜索到,需要把关键字放到这个字段。

所有的客户端和服务器端都需要使用相同的encode/decode规则,也就是传输在网络上的MessagePayload定义必须是一样的,这样才能无误的在各个端和服务直接传递。

可以把消息定义放到应用层,不需要放到Client层。消息定义完成后,需要在connect之前,调用registerMessageContent方法来注册到SDK中.

0.0.2. Step 2 修改UI,找到消息列表界面添加对这个消息的UI支持

在所有的客户端内都能找到其它消息的参考代码,请找到对应的代码,直接添加到工程中。

0.0.3. Step 3 服务器端使用

使用Server API发送消息是与客户端不同的,在Server API发送的是Encode之后的MessagePayload。所以如果您想要在服务器端发送某个消息(自定义和内置消息都是一样的),就必须使用跟客户端一样的规则Encode生成MessagePayload,并且MessagePayload里的二进制数据是经过base64转码的。

0.0.4. 最后

对于IM服务来说,所有收到的内容都是MessagePayload,发出去的也是MessagePayload,所以自定义消息对于IM服务是完全透明的,IM服务器完全不用修改,这也是野火IM的强大扩展能力的表现。

2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2024-10-01 07:37:49

results matching ""

    No results matching ""