全部文档

( 最近更新时间:2020-04-28 19:00:00 )

# 导入 SDK

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

  1. cd 至项目根目录
  2. 执行 pod init
  3. 执行 open -e Podfile
  4. 添加导入配置 pod 'RongCloudIM/IMLib', '~> 2.10.4'

2.10.4 为当前最新版本,如需指定具体版本,请注意 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 (opens new window) 并返回给您的客户端,客户端获取到这个 Token 即可连接融云服务器。
  2. success 即连接成功回调,会返回 Token 对应的 UserId
  3. error 即连接失败回调,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 用的 AppKey 是否一致;
  4. tokenIncorrect 即过 Token 无效回调,是因为您在开发者后台设置了 Token 过期时间,您需要请求您的服务器重新获取 Token 并再次用新的 Token 建立连接。
[[RCIMClient sharedRCIMClient] connectWithToken:@"开发者的 server 通过请求 server api 获取到的 token 值"
                                        dbOpened:^(RCDBErrorCode code) {}
                                         success:^(NSString *userId) {}
                                           error:^(RCConnectErrorCode status) {}
                                  tokenIncorrect:^{}];
已复制
1
2
3
4
5

# 获取会话列表

  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. 设置接收消息监听代理。
// 设置消息接收监听
[[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] logout];
已复制
1

文档是否解决您的问题 ?

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