集成刚说完,这里接直接说使用吧
一、初始化
导入头文件
#import
#import
初始化
//AppKey要对应,一定注意开发环境和生产环境对应的AppKey
[[RCIM sharedRCIM] initWithAppKey:RONGCLOUDAPPKEY];
连接服务器:融云提供的connectWithToken:success:error:tokenIncorrect: 方法,需要传入融云的token值,这个token值是在登录自己服务器时,后台所传过来的,同时传过来的数据中要保存融云的userId,头像和昵称,这些在会话列表和聊天界面都要用到。
//如果存在token,直接进行连接,不存在就访问自己的服务器,拿到token之后再次进行连接
NSString *ryToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"rytoken"];
NSLog(@"进入首页ryToken:%@",ryToken);
if(ryToken){
[[RCIM sharedRCIM] connectWithToken: ryToken success:^(NSString *userId) {
NSLog(@" 微信 登陆登陆成功。当前登录的用户ID:%@", userId);
} error:^(RCConnectErrorCode status) {
NSLog(@"微信 登陆登陆的错误码为:%lu", status);
} tokenIncorrect:^{
//token过期或者不正确。
//如果设置了token有效期并且token过期,请重新请求您的服务器获取新的token
//如果没有设置token有效期却提示token错误,请检查您客户端和服务器的appkey是否匹配,还有检查您获取token的流程。
NSLog(@"微信 登陆token错误");
}];
}else{
//访问自己服务器,获取融云token值
[self getRongCloudToken];
}
还有一些其他的添加:
//是否在发送的所有消息中携带当前登录的用户信息
[RCIM sharedRCIM].enableMessageAttachUserInfo = YES;
RCUserInfo *_currentUserInfo =
[[RCUserInfo alloc] initWithUserId:[[NSUserDefaults standardUserDefaults] objectForKey:@"ryuid"] name:[[NSUserDefaults standardUserDefaults] objectForKey:@"nickname"] portrait:[[NSUserDefaults standardUserDefaults] objectForKey:@"headimgurl"]];
[RCIM sharedRCIM].currentUserInfo = _currentUserInfo;
//设置日志级别 输出错误、警告和一般的日志
[RCIMClient sharedRCIMClient].logLevel = RC_Log_Level_Info;
//开启用户信息和群组信息的持久化
[RCIM sharedRCIM].enablePersistentUserInfoCache = YES;
//设置用户信息源和群组信息源(这个需要自己实现,写成单例就可以,下面补充)
[RCIM sharedRCIM].userInfoDataSource = HYNRCDData;
[RCIM sharedRCIM].groupInfoDataSource = HYNRCDData;
//是否在发送的所有消息中携带当前登录的用户信息
[RCIM sharedRCIM].enableMessageAttachUserInfo = YES;
//开启消息撤回功能
[RCIM sharedRCIM].enableMessageRecall = YES;
// 设置头像为圆形
[RCIM sharedRCIM].globalMessageAvatarStyle = RC_USER_AVATAR_CYCLE;
[RCIM sharedRCIM].globalConversationAvatarStyle = RC_USER_AVATAR_CYCLE;
// 设置优先使用WebView打开URL
[RCIM sharedRCIM].embeddedWebViewPreferred = YES;
//开启多端未读状态同步
[RCIM sharedRCIM].enableSyncReadStatus = YES;
//设置显示未注册的消息
//如:新版本增加了某种自定义消息,但是老版本不能识别,开发者可以在旧版本中预先自定义这种未识别的消息的显示
[RCIM sharedRCIM].showUnkownMessage = YES;
[RCIM sharedRCIM].showUnkownMessageNotificaiton = YES;
设置自己的数据源信息:HYNRCDataSource:
//HYNRCDataSource.h文件
#import
#import
#define HYNRCDData [HYNRCDataSource shareInstance]
//遵守协议
@interface HYNRCDataSource : NSObject
+ (HYNRCDataSource *)shareInstance;
@end
//HYNRCDataSource.m文件
#import "HYNRCDataSource.h"
static HYNRCDataSource *_dataSource = nil;
@implementation HYNRCDataSource
+(HYNRCDataSource *)shareInstance
{
static dispatch_once_t once;
dispatch_once(&once, ^{
_dataSource = [[[self class] alloc] init];
});
return _dataSource;
}
//获取群组信息
#pragma mark - RCIMUserInfoDataSource
- (void)getGroupInfoWithGroupId:(NSString *)groupId
completion:(void (^)(RCGroup *))completion {
if ([groupId length] == 0)
return;
//从自己的服务器中获取群的基本信息,然后传到融云的SDK中,在会话列表页面就可以显示圈子的图片和圈子的名字
NSString *url = [NSString stringWithFormat:@"%@%@",NEW_BASEURL,GETGROUPINFO];
NSDictionary *param = @{@"ry_gid":groupId};
[[HTTPRequest sharedInstance] GET:url parameters:param succeed:^(id responseObject) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
if([dic[@"code"] isEqualToString:@"200"]){
RCGroup *info = [[RCGroup alloc] init];
info.groupId = groupId;
info.groupName = dic[@"groupinfo"][@"gname"];
info.portraitUri = dic[@"groupinfo"][@"picurl"];
return completion(info);
}
} failure:^(NSError *error) {
NSLog(@"获取圈聊信息 失败error:%@",error);
}];
}
// 获取用户信息
#pragma mark - RCIMUserInfoDataSource
- (void)getUserInfoWithUserId:(NSString *)userId
completion:(void (^)(RCUserInfo *))completion {
// NSLog(@"getUserInfoWithU