iOS 关于集成<融云IM>的一些常用方法

容我磨叽一下

即使我也知道看这篇文章的人是不会看的,但是我还是想说啊,融云你们把文档好好写一下啦,APP什么的作为demo真的很鸡肋啊。

步入正题

这篇文章不是介绍集成融云的各种前期准备的(就是怎么注册账号啥的),这个官方的文档说的还是很清楚的。官网: 集成融云的前期准备 不废话了。

1.初始化并连接融云服务器

无论你的APP是需要融云的什么功能,初始化连接融云服务器是必须的


#import <RongIMKit/RongIMKit.h>
[[RCIM sharedRCIM] initWithAppKey:@"Your appKey"];
复制代码

这里说一下,我的token是服务器获取的,然后根据这个融云会给你返回相应的userID。另外,连接服务器获取最新token也是在你需要的地方写就行了

//连接融云服务器
[[RCIM sharedRCIM] connectWithToken:@"your token"     success:^(NSString *userId) {
            NSLog(@"登陆成功。当前登录的用户ID:%@", userId);
            
            //成为当前用户信息的提供者:这个也是在你需要的地方写,我这里只是做一个提醒
            RCUserInfo *infor = [[RCUserInfo alloc]initWithUserId:userId name:name portrait:icon];
            [RCIM sharedRCIM].userInfoDataSource = self;
            [RCIMClient sharedRCIMClient].currentUserInfo = infor;
            
        } error:^(RCConnectErrorCode status) {
            NSLog(@"登陆的错误码为:%ld", (long)status);
        } tokenIncorrect:^{
            NSLog(@"token错误");
        }];
        
复制代码

2.集成会话界面

这里我先集成会话界面的原因是,我的需求不是根据好友列表进行聊天,所以我先说集成对话界面再说对话列表。以单聊为例,以后补充群聊。

1)聊天界面继承 RCConversationViewController

这个控制器是融云给你写好的,继承就会有最基本的界面以及聊天功能

//跳转之前targetId以及conversationType是不可缺的,否则无法完成聊天,或者说可以聊天但是没有历史消息记录
ChatViewController *messageVC= [[ChatViewController alloc]init];
    messageVC.targetId = @"";//就是你作为用户唯一标示的ID
    messageVC.conversationType = ConversationType_PRIVATE;//单聊
    [self.navigationController pushViewController:messageVC animated:YES];
复制代码
#pragma mark - 设置当前登录用户的头像昵称

  [RCIM sharedRCIM].enableMessageAttachUserInfo = YES;
  
 RCUserInfo *_currentUserInfo = [[RCUserInfo alloc] initWithUserId:[[[NSUserDefaults standardUserDefaults] valueForKey:@"user"] objectForKey:@"uuid"] name:[[[NSUserDefaults standardUserDefaults] valueForKey:@"user"] objectForKey:@"nickname"] portrait:[[[NSUserDefaults standardUserDefaults] valueForKey:@"user"] objectForKey:@"image"]];
 [RCIM sharedRCIM].currentUserInfo = _currentUserInfo;
复制代码
2)聊天列表继承 RCConversationListViewController
 ChatListViewController *secondViewController = [[ChatListViewController alloc] init];
[self.navigationController pushViewController:messageVC animated:YES];
复制代码
 //点击列表跳转,重写RCConversationListViewController的onSelectedTableRow事件
- (void)onSelectedTableRow:(RCConversationModelType)conversationModelType
         conversationModel:(RCConversationModel *)model
               atIndexPath:(NSIndexPath *)indexPath {
    
    ChatViewController *conversationVC = [[ChatViewController alloc]init];
    //聊天界面的聊天类型
    conversationVC.conversationType = model.conversationType;
    //需要打开和谁聊天的会话界面,和谁聊天其实是通过TargetId来联系的。
    conversationVC.targetId = model.targetId;
    conversationVC.conversationTitle = model.conversationTitle;
    [self.navigationController pushViewController:conversationVC animated:YES];
    
}
复制代码

3.通知回调问题

#pragma mark - 设置RCIMReceiveMessageDelegate代理
[[RCIM sharedRCIM] setReceiveMessageDelegate:self];

#pragma mark - 融云前台接收到消息
-(void)onRCIMReceiveMessage:(RCMessage *)message left:(int)left{
    
   //
    
}
复制代码

4.头像昵称问题

#pragma mark - 此方法中要提供给融云用户的信息,建议缓存到本地,然后该方法每次从您的缓存返回
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void(^)(RCUserInfo* userInfo))completion
{
//该信息需要从本地或者网络获取
    RCUserInfo *user = [[RCUserInfo alloc]init];
    user.name = [dic[@"data"] objectForKey:@"nickname"];
    user.portraitUri = [dic[@"data"] objectForKey:@"image"];
        
    [[NSNotificationCenter defaultCenter] postNotificationName:@"RefrshChatList" object:nil];
    
    return completion(user);
}
复制代码

转载于:https://juejin.im/post/5a585de4f265da3e364131a1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值