欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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. 
iOS---集成融云即时通讯详细教程

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测试 
iOS---集成融云即时通讯详细教程


iOS---集成融云即时通讯详细教程

6.目前为止,简单的单聊功能已经实现 
iOS---集成融云即时通讯详细教程

7.远程消息推送按照官方步骤即可http://www.rongcloud.cn/docs/ios_push.html.