自定义消息显示“当前版本暂不支持查看此消息”

自定义消息显示“当前版本暂不支持查看此消息”排查方法
发布时间: 2021-09-28 16:05

回答:

1、在自定义消息类的编解码方法中打断点,看收发消息的时候会不会执行。

编解码方法:
1、序列化:消息内容通过此方法,将消息中的所有数据,编码成为 JSON 数据,返回的 JSON 数据将用于网络传输。
- (NSData *)encode;

2、反序列化:网络传输的 JSON 数据,会通过此方法解码,获取消息内容中的所有数据,生成有效的消息内容。
- (void)decodeWithData:(NSData *)data;


如果上述两个方法不执行:

1、注册自定义消息方法 - (void)registerMessageType:(Class)messageClass; 必须在融云初始化方法 initWithAppkey: 之后、融云连接方法connectWithToken: 之前调用。

(注意:a、自定义消息类名不要写错成cell类名;

            b、如果使用IMKit带UI SDK库,使用RCIM类调用初始化和连接融云方法;

                 如果使用IMLib无UI SDK库,使用RCIMClient类调用初始化和连接融云方法。


[[RCIM sharedRCIM] registerMessageType:[自定义消息类 class]];


2、看一下接收到的消息中消息名称 objectName 与 自定义消息类中获取消息名称方法 

    + (NSString *)getObjectName; 返回值是否完全一致,如果不一致,SDK 会认为不是一种消息类型,不会上述走编解码方法。

(注意:a、定义的消息类型名,需要在各个平台上保持一致,否则消息无法互通;

            b、请勿使用 RC: 开头的消息名称objectName,避免和 融云SDK内部的消息名称冲突,更不能使用SDK内置的 消息名称objectName进行自定义消息。


2、如果自定义消息的编解码方法可以执行,但是会话页面中自定义cell里面的代码不执行。

    查看一下RCConversationViewController类的子类中  

    - (void)registerClass:(Class)cellClass forMessageClass:(Class)messageClass;方法调用时机,该方法的调用时机必须紧跟着 - (void)viewDidLoad;中 [super viewDidLoad];方法之后执行。

(注意:cell 类名和自定义消息类名不要写错)

image.png