美文网首页
融云,一个错误的选择。。

融云,一个错误的选择。。

作者: 杰尐_dc6c | 来源:发表于2020-02-28 15:36 被阅读0次

对上一次接融云已经是三年前的事情了。以前觉得口碑还不错,至少容易上手,但现在的融云,先交三百块钱,可以向他提十个问题,能快速解答你。。
我批!
我批!
我批!

以下就谈谈如何快速接入融云:
1. 先在AppDelegate里面配置了

    /*

    *********融云信息接入***********

    */

    [[RCIM sharedRCIM] initWithAppKey:@"xxxxxxxxx"];

    //是否携带用户信息

    [RCIM sharedRCIM].enableMessageAttachUserInfo=YES;

    //开启群组信息持久化      --会导致内存溢出---无解。必须交钱、交钱、交钱开漫游

//    [RCIM sharedRCIM].enablePersistentUserInfoCache = YES;

    //设置头像

    [RCIM sharedRCIM].globalMessageAvatarStyle=RC_USER_AVATAR_CYCLE;

    [RCIM sharedRCIM].globalConversationAvatarStyle=RC_USER_AVATAR_CYCLE;

    [[RCIM sharedRCIM] setUserInfoDataSource:self];

    [[RCIM sharedRCIM] setGroupInfoDataSource:self];

2.登录页面进行信息处理,登录融云

这里先从自己服务器获取用户信息,

              NSString*userNickName=[NSString stringWithFormat:@"%@",SafeValue(dic[@"nickname"])];

                NSString*userid=[NSString stringWithFormat:@"%@",SafeValue(dic[@"id"])];

                NSString*photo=[NSString stringWithFormat:@"%@",SafeValue(dic[@"photo"])];

                /*我们产品后台接口 , 获取融云信息  */

                RCUserInfo *_currentUserInfo =

                [[RCUserInfo alloc] initWithUserId:userid name:userNickName portrait:photo];

                [RCIM sharedRCIM].currentUserInfo = _currentUserInfo;

                //在扩展消息中携带用户信息

                [RCIM sharedRCIM].enableMessageAttachUserInfo=_currentUserInfo;

                /*登录融云*/

                [[RCIM sharedRCIM] connectWithToken:rongToken success:^(NSString *userId) {

                    NSLog(@"成功就会返回融云用户userId  %@",userId);

                } error:^(RCConnectErrorCode status) {

                    NSLog(@"融云status %ld",(long)status);

                } tokenIncorrect:^{

                }];
3 .继承RCConversationListViewController,拓展聊天列表页

@interface MGConversationListViewController : RCConversationListViewController

设置一下数据信息,只要单调的数据

-(id)init{

    self = [super init];

    /**

    <设置会话列表头像为圆形>

    **/

    [self setConversationAvatarStyle:RC_USER_AVATAR_CYCLE];

    if (self) {

        //设置需要显示哪些类型的会话

        [self setDisplayConversationTypes:@[@(ConversationType_PRIVATE)]];

    }

    return self;

}

然后按照教程插入 插入自定义会话model

- (NSMutableArray *)willReloadTableData:(NSMutableArray *)dataSource {

    for (int i = 0; i < dataSource.count; i++) {

        RCConversationModel *model = dataSource[i];

        RCMessageContent*tex=model.lastestMessage;

        NSString*xxx=tex.conversationDigest;

        RCUserInfo*UserInfoSender=tex.senderUserInfo;

        NSString*name=[NSString stringWithFormat:@"%@",SafeValue(UserInfoSender.name)];

        NSString*photourl=[NSString stringWithFormat:@"%@",SafeValue(UserInfoSender.portraitUri)];

        NSLog(@"name: %@",name);

        NSLog(@"photourl: %@",photourl);

        NSLog(@"xxx: %@",xxx);

        NSLog(@"targetId: %@",model.targetId);

        打印获取到最后一条的信息

      if (model.conversationType==1) {

            model.conversationModelType=RC_CONVERSATION_MODEL_TYPE_CUSTOMIZATION;

        }

}

    return dataSource;

}

//左滑删除

- (void)rcConversationListTableView:(UITableView *)tableView

                commitEditingStyle:(UITableViewCellEditingStyle)editingStyle

                  forRowAtIndexPath:(NSIndexPath *)indexPath {

    //可以从数据库删除数据

    RCConversationModel *model = self.conversationListDataSource[indexPath.row];

        [[RCIMClient sharedRCIMClient] removeConversation:ConversationType_PRIVATE targetId:model.targetId];

    [self.conversationListDataSource removeObjectAtIndex:indexPath.row];

    [self.conversationListTableView reloadData];

}

//高度

- (CGFloat)rcConversationListTableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return 67.0f;

}

//自定义cell

- (RCConversationBaseCell *)rcConversationListTableView:(UITableView *)tableView

                                  cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    RCConversationModel *model = self.conversationListDataSource[indexPath.row];

    RCDChatListCell *cell = [RCDChatListCell cellWithTableView:tableView];

    [cell setDataModel:model];

    return cell;

}

大致这几部就能接入融云了的聊天列表

//重写RCConversationListViewController的onSelectedTableRow事件
- (void)onSelectedTableRow:(RCConversationModelType)conversationModelType
         conversationModel:(RCConversationModel *)model
               atIndexPath:(NSIndexPath *)indexPath {
    RCMessageContent*tex=model.lastestMessage;
    RCUserInfo*UserInfoSender=tex.senderUserInfo;
    /*
       **************************************************
     跳转下一层MGConversationViewController 我是继承了融云的聊天页RCConversationViewController
     */
    MGConversationViewController  *conversationVC = [[MGConversationViewController  alloc]init];
    conversationVC.conversationType = 1;
    conversationVC.targetId = model.targetId;
    conversationVC.title = [NSString stringWithFormat:@" 与 %@ 会话",name];
    [self.navigationController pushViewController:conversationVC animated:YES];
}

大致这样子,完成!

最后会产生一个鸡肋的问题,没有收到对方消息之前,你的聊天列表显示的是你自己的信息。。
还有安卓与ios 的信息结构是不一样的,所以必须得跟安卓交流好,一不小心又要掉坑。
什么内存溢出,闪退啊,暴增啊,一系列问题来了。。

然后这个时候,融云就会叫你参考sealTalk demo,一堆文件的过流程。
赶时间,只能先交300块,买十个答疑的问题。。

再一次:

我批!

我批!

我批!

一个不愉快的经历。。。。

相关文章

网友评论

      本文标题:融云,一个错误的选择。。

      本文链接:https://www.haomeiwen.com/subject/xddlhhtx.html