自定义消息

发布时间: 2019-03-07 18:06

回答:

关于如何定义和发送自定义消息请参考官网文档: https://docs.rongcloud.cn/v4/views/im/ui/guide/private/conversation/msgsend/android.html#createcustom


自定义消息常见问题:

1. 收到自定义消息展示 “当前版本暂不支持查看此消息” 。可能原因如下:

    1) 未注册消息。可以调用以下接口注册消息

RongIM.registerMessageType 或者 RongIMClient.registerMessageType

/**
 * 用于自定义消息的注册, 注册后方能正确识别自定义消息, 建议在init后及时注册,保证自定义消息到达时能正确解析。
 *
 * @param messageContentClass 消息类型,必须要继承自 {@link io.rong.imlib.model.MessageContent}。
 * @throws AnnotationNotFoundException 如果没有找到注解时抛出。
 */
public static void registerMessageType(Class<? extends MessageContent> messageContentClass)

    2) 未注册消息模板。可以调用以下接口注册展示消息模板

    RongIM.registerMessageTemplate

/**
 * 注册消息模板。
 *
 * @param provider 模板类型。
 */
public static void registerMessageTemplate(IContainerItemProvider.MessageProvider provider)

    3) 消息本身解析不正确。

       可以在 ipc 进程跟踪消息发送及解析过程。

       发送时编码的方法为 ecode:

/**
 * 将本地消息对象序列化为消息数据。
 *
 * @return 消息数据。
 */
@Override
public byte[] encode() {

      接收时解码的方法为对应的构造函数:

public MyMessage(byte[] data) {

    4) 消息序列化错误

       须在 ipc 进程跟踪消息的序列化过程。注意序列化中的 Parcel 的读写个数和顺序一定要一一对应。


2. 自定义消息收不到推送。

调用 sendMessage 发送消息时,须设置 pushContent 参数。