更新时间: 2021-04-21

以下内容为快速集成摘要,具体细节可依次参考全局配置

# 导入 SDK

SDK 支持使用 CocoaPods 导入并管理 SDK。 需安装 CocoaPods 环境,请参照 CocoaPods 安装 (opens new window)

  1. cd 至项目根目录
  2. 执行 pod init
  3. 执行 open -e Podfile
  4. Podfile 文件中添加下面内容
pod 'RongCloudIM/IMLib', '~> 4.0.3.3'
已复制
1

如需指定具体版本,请注意 pod 使用规范 (opens new window)

  1. 执行 pod install
  2. 双击打开 .xcworkspace

# 初始化

  1. 使用 SDK 功能前,请 import 下面的头文件,Swift 项目需要在工程的 Bridging-Header.h 文件中添加 SDK 的引用。
#import <RongIMLib/RongIMLib.h>
已复制
1
  1. 请使用开发功能之前从融云开发者后台 (opens new window)注册得到的 Appkey,通过 RCIMClient 的单例,传入 initWithAppKey: 方法,初始化 SDK。
  2. 开发者在使用融云 SDK 所有功能之前,开发者必须先调用此方法初始化 SDK。 在 App 的整个生命周期中,开发者只需要将 SDK 初始化一次。
[[RCIMClient sharedRCIMClient] initWithAppKey:@"Your Appkey"];
已复制
1

# 连接融云

  1. Token 即用户令牌,相当于您 APP 上当前用户连接融云的身份凭证。在您连接融云服务器之前,您需要请求您的 App Server,您的 App Server 通过融云 Server API 获取 Token 并返回给您的客户端,客户端获取到这个 Token 即可连接融云服务器。
  2. dbOpened 即消息数据库是否打开的回调,会返回具体业务码。
  3. success 即连接成功回调,会返回 Token 对应的 UserId
  4. error 即连接失败回调,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 用的 AppKey 是否一致。当走到该回调时说明 SDK 无法继续重连,需要 APP 再次连接
[[RCIMClient sharedRCIMClient] connectWithToken:@"开发者的 server 通过请求 server api 获取到的 token 值"
                                        dbOpened:^(RCDBErrorCode code) {}
                                         success:^(NSString *userId) {}
                                           error:^(RCConnectErrorCode status) {}];
已复制
1
2
3
4

# 获取会话列表

  1. 获取到所有单聊会话,如果需要获取更多会话类型的会话,可以增加数组中的会话类型对象。
  2. 可以将获取到的会话列表数用 UITableView 来展示。
NSArray *conversationList = [[RCIMClient sharedRCIMClient] getConversationList:@[@(ConversationType_PRIVATE)]];
已复制
1

# 发送消息

  1. 构造文本消息对象。
  2. 调用 RCIMClientsendMessage 方法发送。
  3. success 即发送成功回调,会返回消息的 messageId
  4. error 即发送失败回调,会返回消息的 messageId 和 发送失败的错误码 nErrorCode
    RCTextMessage *txtMessage = [RCTextMessage messageWithContent:@"测试文本消息"];
    [[RCIMClient sharedRCIMClient]
                sendMessage:ConversationType_PRIVATE
                targetId:@"tester1"
                content:txtMessage
                pushContent:@"远程推送显示的内容"
                pushData:@"远程推送的附加信息"
                success:^(long messageId) {
        
                }
                error:^(RCErrorCode nErrorCode, long messageId) {
        
    }];
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13

# 接收消息

  1. 设置接收消息监听代理。
// 设置消息接收监听,建议设置给 AppDelegate 之类的单利对象,保证在 APP 整个生命周期内都有效
[[RCIMClient sharedRCIMClient] setReceiveMessageDelegate:self object:nil];
已复制
1
2
  1. 实现接收消息回调方法。
- (void)onReceived:(RCMessage *)message
              left:(int)nLeft
            object:(id)object {
    if ([message.content isMemberOfClass:[RCTextMessage class]]) {
        RCTextMessage *testMessage = (RCTextMessage *)message.content;
        NSLog(@"消息内容: %@", testMessage.content);
    }

    NSLog(@"还剩余的未接收的消息数: %d", nLeft);
}
已复制
1
2
3
4
5
6
7
8
9
10

# 获取历史消息

  1. 从本地数据库中获取历史消息。
  2. oldestMessageId-1 即从最新的一条消息开始获取。
  3. count 即获取消息的数量。
  4. RCIMClient 类中还有其他获取历史消息的接口,可根据自己的需求调用。
  5. 如需从融云的服务器拉取历史消息,需要开通 IM 商用版 - 单群聊云存储 (opens new window) 功能。
[[RCIMClient sharedRCIMClient]
            getHistoryMessages:ConversationType_PRIVATE
            targetId:@"tester1"
            oldestMessageId:-1
            count:10];

已复制
1
2
3
4
5
6

# 断开连接

  1. 不同接口决定断开融云连接后收不收推送,视情况调用。
  2. 在下次连接融云成功后,会收取上次离线后的消息,离线消息最多可以保存 7 天。
//断开连接接收推送
[[RCIMClient sharedRCIMClient] disconnect];

//断开连接不收推送
[[RCIMClient sharedRCIMClient] logout];
已复制
1
2
3
4
5

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助