在正式说之前默认你的工程已经集成融云RongIMKit.
本文章主要针对聊天图像显示的问题,以及好友请求添加的问题作出记录.
一,聊天图像问题:
1,首先你需要实现用户信息提供者方法,这个方法只需实现一次,
//遵循协议
RCIMUserInfoDataSource
//设置代理
[[RCIM sharedRCIM] setUserInfoDataSource:self];
//实现代理方法
-(void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion {
在这个方法里面实现用户信息提供 RCUserInfo;具体提供什么网上有说明,我在这里说一些我自己的见解,
1.这个方法是任何一个用户信息都得在这里提供(当然也有例外情况),自己的信息,好友的信息等.userid是一直变化的,你可以根据userid去自己服务器请求数据之后在返回给融云,也可以在本地数据库查询返回给融云.
2.这个方法只针对单聊界面,群组信息有群组信息提供者方法.(有点废话)
}
实现上面的方法基本上你的聊天界面就能显示出用户信息了,但是还有一种情况就是iOS和Android在通讯的时候不能正确的显示用户信息,这个时候你需要实现下面内容:
1.完成用户信息提供者:此处的用户信息提供者指的是当前登录账号用户信息所以一般在登录完成时设置:
[RCIM sharedRCIM].currentUserInfo.userId = @"使用者ID";
[RCIM sharedRCIM].currentUserInfo.name = @"名字";
[RCIM sharedRCIM].currentUserInfo.portraitUri =@"图像";
2.设置发送的消息是否携带用户信息
[RCIM sharedRCIM].enableMessageAttachUserInfo = YES;
设置完成之后,iOS和Android上就能正确显示用户信息,我们不需要做其他操作,融云会自己实现显示用户信息.
二,好友请求通知的处理.
首先说一下我遇到的问题,一开始的时候好友请求消息过来了在会话列表显示,但是点击进去之后确实灰纸条提示"当前版本不支持查看此消息",我以为是我们的服务器和手机端的融云版本不匹配,但是检查之后并不是,一直找不到解决的办法,所以我就想到另外的方法:
1.我将系统会话的Model.conversationModelType 改成 RC_CONVERSATION_MODEL_TYPE_COLLECTION 聚合显示,这样所有的好友请求都能显示在一跳消息中,但是打开依然是版本不合适.(在我写这边文章的时候想到一种可能,那就是当点击这个Cell的时候,跳转到自定义的界面,在这个界面重新想服务器请求添加好友的数据,当然我后面的效果就是这么实现的).
2.这时候我就想到自定义cell,当我自定cell完成后不知道该如何让cell在正确的时间显示好友请求,看了官方文档有个方法可以接收到好友请求
-(void)didReceiveMessageNotification:(NSNotification *)notification {
//这是融云的一个方法,所以在重写这个方法的时候我们的实现下面代码,不然好友发过来的聊天消息不提示
[super didReceiveMessageNotification:notification];//一定的实现
RCMessage *newMessage = notification.object;//获得消息实体类
if ([newMessage.senderUserId isEqualToString:@"这个地方填写你服务器发送消息的ID"]) {
self.latestNewsArray[1] = @"您收到一条好友请求消息";//这是在自定义好友请求cell的显示
KMyLog(@"%@",newMessage.content);
//更改新的朋友消息数量
if ([self.badgeArray[1] integerValue] == 0) {
self.badgeArray[1] = @"1";
} else {
NSInteger index = [self.badgeArray[1] integerValue] + 1;
self.badgeArray[1] = [NSString stringWithFormat:@"%ld",index];
}
//通知主线程刷新界面
dispatch_async(dispatch_get_main_queue(), ^{
[self.conversationListTableView reloadData];
});
}
}
上面的方法完成基本上,就可以显示了,当然逻辑关系上还的自己去处理了.
哦,对了,在设置界面需要展示那些会话类型的时候不要把系统会话(ConversationType_SYSTEM)也填上去,不然你会感觉很尴尬的.
3.点击好友请求cell,进入还有请求界面,然后利用广播通知自定义好友请求cell,告诉它,好友请求消息阅读完毕,该改变显示了.
到这里好友请求基本的处理基本完成,下面给大家看一下效果图吧:
完成需求,以上只是记录我完成这个需求的过程,顺便给大家一些思路.