iOS 常见问题总结及解决方法

SDK 如何初始化

在您需要使用融云 SDK 功能的类中,import 相关头文件。

#import <RongIMKit/RongIMKit.h>

如果是 Swift 的话,需要在您工程的 Bridging-Header.h 文件中加入 SDK 的引用

#import <RongIMKit/RongIMKit.h>

请使用您之前从融云开发者控制台注册得到的 App Key,通过 RCIM 的单例,传入 initWithAppKey:方法,初始化 SDK。

您在使用融云 SDK 所有功能(包括显示 SDK 中的 View 或者显示继承于 SDK 的 View )之前,您必须先调用此方法初始化 SDK。 在 App 的整个生命周期中,您只需要将 SDK 初始化一次。

Objective-C 代码

[[RCIM sharedRCIM] initWithAppKey:@"YourTestAppKey"];

连接服务器

将您在上一步获取到的 Token,通过 RCIM 的单例,传入 -connectWithToken:success:error:tokenIncorrect: 方法,即可建立与服务器的连接。

关于融云 SDK 连接的详细处理逻辑问题,请查看连接融云

Objective-C 代码

[[RCIM sharedRCIM] connectWithToken:@"YourTestUserToken" 
success:^(NSString *userId) {
    NSLog(@"登陆成功。当前登录的用户ID:%@", userId);
}
error:^(RCConnectErrorCode status) { 
    NSLog(@"登陆的错误码为:%d", status);
} 
tokenIncorrect:^{ 
    //token过期或者不正确。
    //如果设置了token有效期并且token过期,请重新请求您的服务器获取新的token
    //如果没有设置token有效期却提示token错误,请检查您客户端和服务器的appkey是否匹配,还有检查您获取token的流程。
    NSLog(@"token错误");
}];

返回错误码请参看下面链接

http://doc.rongcloud.cn/im/IOS/5.X/code/code

如何动态获取 token

动态获取 token 需要在 APP server 端获取

参考文档:http://doc.rongcloud.cn/imserver/server/v1/user/register

token 失效问题

token错误,请您检查客户端初始化使用的AppKey和您服务器获取token使用的AppKey是否一致

token过期,是因为您在开发者后台设置了token过期时间,您需要请求您的服务器重新获取token并再次用新的token建立连接。

请确认一下 AppKey 和 token 是否匹配。

请在开发者后台确认 token 是否在有效期。

请使用工具:https://rongcloud.github.io/websdk-demo/api-test.html 来测试一下能否链接成功

如何自定义消息请参照下面文档

http://support.rongcloud.cn/kb/NTMw

会话列表和会话页面如何显示用户心头像和名称

实现用户信息提供者,可在 AppDelegate.m 中遵循协议 RCIMUserInfoDataSource,RCIMGroupInfoDataSource,

设置代理

[[RCIM sharedRCIM] setUserInfoDataSource:self];

[[RCIM sharedRCIM] setGroupInfoDataSource:self];

实现方法
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion;

群组信息提供者:

- (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *))completion;

具体可参照下面文档http://support.rongcloud.cn/kb/MjYx

历史消息、历史消息云存储、消息补偿的解释

历史消息:SDK 会对消息做本地存储,在会话中显示的都是本地存储的消息

历史消息云存储:1)当本地数据库的消息展示完成以后,如果你开通了历史消息云存储的服务,在会话中下拉,会继续加载消息,这部分消息就是从服务器端拉取的历史消息;
2)清空会话中的历史消息,仅仅清除的是本地存储的历史消息,如果你开通了历史消息云存储服务,在会话中下拉,依然能拉取历史消息,这部分消息就是从服务器端拉取的历史消息;

消息补偿:是一项收费服务器,体现在多端登录的时候消息同步。消息补偿可以设置时间:3天或7天;当客户端第一次(仅仅是第一次)安装登录,就会把这段时间内的所有消息下发下来

如何设置导航栏和导航栏字体颜色

请参照下面文档http://support.rongcloud.cn/kb/Mzg2

如何自定义会话列表cell

请参照下面文档http://support.rongcloud.cn/kb/MjUz

与第三方开源库BlocksKit冲突的问题

当融云SDK和BlocksKit被引入到同一工程,通过融云的聊天UI界面去选择照片、拍摄照片并发送时,无法正常选择和发送。

具体解决办法请参照下面文档http://support.rongcloud.cn/kb/MzI1

如何在发送的消息中携带用户信息?

在一些低频的交互场景中,比如两个用户之间需要发送一两条消息,开发者可以选择在消息中携带用户信息,降低使用难度和提高友好性

具体实现请参照下面文档http://support.rongcloud.cn/kb/Mzgw

本地通知和远程推送收不到

本地通知不显示,请按照下面文档进行排查http://support.rongcloud.cn/kb/MzEw

远程推送不显示,请按照下面文档进行排查http://support.rongcloud.cn/kb/MzEy

点击本地通知与远程推送进行跳转

点击通知弹出栏后,相应操作请参考下面文档http://support.rongcloud.cn/kb/NTYy

如何导出融云的数据库信息?

本地数据库信息和其他临时文件对于解决问题有很大的帮助,所以当需要融云来解决问题的时候,请尽量提供相应文件

具体操作参考下面文档http://support.rongcloud.cn/kb/Mzk4

如何使用手机获取并导出 Log?

在不链接Xcode的情况下,使用手机获取并导出log,以便分析定位为题。

具体操作请参看下面文档http://support.rongcloud.cn/kb/NDI0