跳转至

iOS

前期准备

由于消息中心是基于融云的 IMKit 和 IMLib 开发的,所以需要开发者在集成消息中心之前,先要了解融云 SDK 的使用。 融云 SDK 文档连接

模块导入

  • 导入 RongMCenter.framework 消息中心库及所需资源文件
  • 导入 RongIMKit.framework
  • 导入 RongIMLib.framework

配置文件导入

导入 “users_config.json” 配置文件。

代码集成

  1. 在初始化融云 SDK 后,注册需要显示的消息类型,以官方 Demo 中 RCDTestMessage 为例子:
[[RCIM sharedRCIM] registerMessageType:[RCDTestMessage class]];

在消息中心 Demo 中,创建了 RCMCDMessageManager 消息管理类,用于注册所有消息中使用到的消息类型。

注意事项:如果不注册消息,消息中心的消息展示页面无法正常显示消息。

  1. 继承 RCMCViewController 创建子类,根据业务需求放到对应的位置。重写下面方法,其中 RCMCDChatViewController 是 RCMCMessageDisplayViewController 的子类

    -(void)gotoChatView:(NSString *)targetId title:(NSString *)title {
        RCMCDChatViewController *chatVC = [RCMCDChatViewController new];
        chatVC.conversationType = ConversationType_SYSTEM;
        chatVC.targetId = targetId;
        chatVC.title = title;
        [self.navigationController pushViewController:chatVC animated:YES];
    }
  2. RCMCDChatViewController 类中可以重写消息 cell 的点击方法,在方法中实现页面跳转,完成业务逻辑。

推送处理

  1. 实现远程推送,推送文档

  2. 点击通知栏跳转知识库,在系统方法中获取远程推送的内容,在 "rc":{"cType":"PR","fId":"xxx","oName":"xxx","tId":"xxxx"},中可以得到会话类型—— cType 和会话 Id——tID,通过这些信息可以标识一个唯一的会话,使用下面代码创建一个 RCMCMessageDisplayViewController 子类的对象,替换点击通知栏跳转知识库中系统方法中的聊天页面对象,实现跳转逻辑即可。

RCMCDChatViewController *vc = [[RCMCDChatViewController alloc] init];
vc.conversationType = cType;
vc.targetId = tID;
  1. 如果不使用融云的推送通道,需要在点击通知栏时候,按照规定好的格式解析推送内容,并实现页面跳转。

自定义 URI 跳转

/**
 点击内容跳转的Url
*/

@property(nonatomic, copy) NSString *contentUrl;

如果消息的 contentUrl 中携带了自定义的 uri 地址,客户端可以使用第三方库进行解析,并跳转到应用内的指定页面。

例:

contentUrl = @"mcenter://mcenterdemo/messagedisplayviewcontroller/system/rong_system_trading";

如果 contentUrl 是自定义的 uri,建议客户端开发人员可以使用 JLRoutes 这个第三方库对 uri 进行解析,正常解析后应该执行下面代码,跳转到相应的消息展示页面。

RCMCDChatViewController *chatVC = [RCMCDChatViewController new];
chatVC.conversationType = ConversationType_SYSTEM;
chatVC.targetId = @"rong_system_trading";
[self.navigationController pushViewController:chatVC animated:YES];

注意事项

  • RCMCViewController 消息中心会话列表中用户信息的显示需要实现 IMKit 库中的用户信息代理函数,可以参考知识库