最近在应用融云,因为第一次应用,遇到了一个小坑,在这里记录一下,心愿能帮忙到后续开发者
问题是应用了融云的 IMKit 组件,也就是自带 UI 的,对于疾速试错的产品来说,工期必须短,所以应用 IMKit 是十分不便的,省去了很大部分工夫去搞界面。然而应用过程中发现,没有用户的头像和昵称。起初通过浏览文档发现,须要设置“用户信息提供者”代理办法。SDK 在须要显示头像和昵称的时候,会通过这个代理找开发者索取用户信息,开发者只有遵循代理,且实现代理办法,返回用户信息即可。
上代码:
1. 遵循代理
@interface AppDelegate () <RCIMUserInfoDataSource>
@end
2. 设置代理
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 必须先初始化
[[RCIM sharedRCIM] initWithAppKey:"开发者本人的 appkey"];
[[RCIM sharedRCIM] connectWithToken:"以后用户的 token" dbOpened:^(RCDBErrorCode code) {} success:^(NSString *userId) {} error:^(RCConnectErrorCode errorCode) {}];
// 设置以后用户信息
RCUserInfo *currentUser = [[RCUserInfo alloc] initWithUserId:@"tiezhu" name:@"铁柱" portrait:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1573646812313&di=116350f184eda99d91393304fa83a6ea&imgtype=0&src=http%3A%2F%2Fimg.jinse.com%2F712431_image3.png"];
[RCIM sharedRCIM].currentUserInfo = currentUser;
// 设置代理
[RCIM sharedRCIM].userInfoDataSource = self;
}
3. 实现代理办法
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *userInfo))completion {
// 这里最好是从开发者本人服务器获取用户信息,而后返回。此处仅为示例
RCUserInfo *user = nil;
if ([userId isEqualToString:@"tiezhu"]) {user = [[RCUserInfo alloc] initWithUserId:@"tiezhu" name:@"铁柱" portrait:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1570172426&di=01d14daa81f320235376d9c4dede0493&imgtype=jpg&er=1&src=http%3A%2F%2Fgss0.baidu.com%2F-vo3dSag_xI4khGko9WTAnF6hhy%2Fzhidao%2Fpic%2Fitem%2Fd788d43f8794a4c240e9466f0ef41bd5ac6e39af.jpg"];
}
if (completion) {completion(user);
}
}
到此就搞定了兄嘚,值一杯秋天的奶茶