对上一次接融云已经是三年前的事情了。以前觉得口碑还不错,至少容易上手,但现在的融云,先交三百块钱,可以向他提十个问题,能快速解答你。。
我批!
我批!
我批!
以下就谈谈如何快速接入融云:
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块,买十个答疑的问题。。
再一次:
我批!
我批!
我批!
一个不愉快的经历。。。。
网友评论