ios 融云 重写对话列表_iOS--融云即时通信的使用(推送、聊天和会话列表的头像和昵称)...

集成刚说完,这里接直接说使用吧

一、初始化

导入头文件

#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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值