( 最近更新时间:2020-04-28 19:00:00 )
# 导入 SDK
SDK 支持使用 CocoaPods 导入并管理 SDK。 需安装 CocoaPods 环境,请参照 CocoaPods 安装 (opens new window)
cd
至项目根目录- 执行
pod init
- 执行
open -e Podfile
- 添加导入配置
pod 'RongCloudIM/IMLib', '~> 2.10.4'
2.10.4
为当前最新版本,如需指定具体版本,请注意 pod 使用规范 (opens new window)。
- 执行
pod install
- 双击打开
.xcworkspace
# 初始化
- 使用 SDK 功能前,请
import
下面的头文件,Swift
项目需要在工程的Bridging-Header.h
文件中添加 SDK 的引用。
#import <RongIMLib/RongIMLib.h>
已复制
1
- 请使用开发功能之前从融云开发者控制台 (opens new window)注册得到的
Appkey
,通过RCIMClient
的单例,传入initWithAppKey:
方法,初始化 SDK。 - 开发者在使用融云 SDK 所有功能之前,开发者必须先调用此方法初始化 SDK。 在 App 的整个生命周期中,开发者只需要将 SDK 初始化一次。
[[RCIMClient sharedRCIMClient] initWithAppKey:@"Your Appkey"];
已复制
1
# 连接融云
Token
即用户令牌,相当于您 APP 上当前用户连接融云的身份凭证。在您连接融云服务器之前,您需要请求您的 App Server,您的 App Server 通过融云 Server API 获取 Token (opens new window) 并返回给您的客户端,客户端获取到这个 Token 即可连接融云服务器。success
即连接成功回调,会返回Token
对应的UserId
。error
即连接失败回调,请您检查客户端初始化使用的AppKey
和您服务器获取token
用的AppKey
是否一致;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
2
3
4
5
# 获取会话列表
- 获取到所有单聊会话,如果需要获取更多会话类型的会话,可以增加数组中的会话类型对象。
- 可以将获取到的会话列表数用
UITableView
来展示。
NSArray *conversationList = [[RCIMClient sharedRCIMClient] getConversationList:@[@(ConversationType_PRIVATE)]];
已复制
1
# 发送消息
- 构造文本消息对象。
- 调用
RCIMClient
中sendMessage
方法发送。 success
即发送成功回调,会返回消息的messageId
。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
2
3
4
5
6
7
8
9
10
11
12
13
# 接收消息
- 设置接收消息监听代理。
// 设置消息接收监听 [[RCIMClient sharedRCIMClient] setReceiveMessageDelegate:self object:nil];
已复制
1
2
2
- 实现接收消息回调方法。
- (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
2
3
4
5
6
7
8
9
10
# 获取历史消息
- 从本地数据库中获取历史消息。
oldestMessageId
传 -1 即从最新的一条消息开始获取。count
即获取消息的数量。RCIMClient
类中还有其他获取历史消息的接口,可根据自己的需求调用。- 如需从融云的服务器拉取历史消息,需要开通 IM 商用版 - 单群聊云存储 (opens new window) 功能。
[[RCIMClient sharedRCIMClient] getHistoryMessages:ConversationType_PRIVATE targetId:@"tester1" oldestMessageId:-1 count:10];
已复制
1
2
3
4
5
6
2
3
4
5
6
# 断开连接
- 断开融云连接后不会再收到消息。
- 在下次连接融云成功后,会收取上次离线后的消息,离线消息最多可以保存 7 天。
[[RCIMClient sharedRCIMClient] logout];
已复制
1