iOS---集成融云即时通讯详细教程
程序员文章站
2022-07-13 15:00:51
...
转载自:https://blog.csdn.net/qqing__/article/details/78350830
相关集成方法也可以直接参考官方文档http://www.rongcloud.cn/docs/ios.html.下面是我集成过程中的一些详细步骤.
1.准备工作:到官网http://www.rongcloud.cn注册登录,创建自己的应用,获取应用的AppKey.
2.集成SDK,建议使用CocoaPods省事
target 'ProjectName' do # 项目名称
pod 'RongCloudIM/IMLib'
pod 'RongCloudIM/IMKit'
end
- 1
- 2
- 3
- 4
3.初始化:AppDelegate.m
#import <RongIMKit/RongIMKit.h>
@interface AppDelegate ()<RCIMUserInfoDataSource>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 融云
[[RCIM sharedRCIM] initWithAppKey:@"your AppKey"];
// 正常开发token是从APP服务器获取的,测试时可以在官网的测试接口获取
[[RCIM sharedRCIM] connectWithToken:token success:^(NSString *userId) {
NSLog(@"登陆成功。当前登录的用户ID:%@", userId);
} error:^(RCConnectErrorCode status) {
NSLog(@"登陆的错误码为:%zd", status);
} tokenIncorrect:^{
//token过期或者不正确。
//如果设置了token有效期并且token过期,请重新请求您的服务器获取新的token
//如果没有设置token有效期却提示token错误,请检查您客户端和服务器的appkey是否匹配,还有检查您获取token的流程。
NSLog(@"token错误");
}];
// 设置代理,代理方法要返回用户信息
[[RCIM sharedRCIM] setUserInfoDataSource:self];
return YES;
}
//RCIMUserInfoDataSource的代理方法
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion {
// 每次展示用户头像等信息都会调用,正常开发应该从app服务器获取,保存在本地
RCUserInfo *info = [[RCUserInfo alloc] initWithUserId:userId name:@"name" portrait:@"http://tx.haiqq.com/uploads/allimg/160417/1_041F15KK0L.jpg"];
completion(info);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
4.会话列表:IMKit中默认使用RCConversationListViewController,可以直接使用或继承
ChatListViewController.h
#import <RongIMKit/RongIMKit.h>
@interface ChatListViewController : RCConversationListViewController
- 1
- 2
- 3
ChatListViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
// 设置需要显示列表显示那些类型的会话
[self setDisplayConversationTypes:@[@(ConversationType_PRIVATE),@(ConversationType_DISCUSSION), @(ConversationType_CHATROOM), @(ConversationType_GROUP), @(ConversationType_APPSERVICE), @(ConversationType_SYSTEM)]];
// 设置需要将哪些类型的会话在会话列表中聚合显示
[self setCollectionConversationType:@[@(ConversationType_DISCUSSION),
@(ConversationType_GROUP)]];
}
// 点击回话时跳转到回话页面
- (void)onSelectedTableRow:(RCConversationModelType)conversationModelType conversationModel:(RCConversationModel *)model atIndexPath:(NSIndexPath *)indexPath {
// 会话页面:直接使用或者继承RCConversationViewController
RCConversationViewController *conversationVC = [[RCConversationViewController alloc]init];
conversationVC.conversationType = model.conversationType;
conversationVC.targetId = model.targetId;
conversationVC.title = model.conversationTitle;
conversationVC.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:conversationVC animated:YES];
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
5.使用官方API测试
6.目前为止,简单的单聊功能已经实现
7.远程消息推送按照官方步骤即可http://www.rongcloud.cn/docs/ios_push.html.