错误原因一:项目中的 App Key 和 Token 不匹配
您当前的 token 与 SDK 中设置的 App Key 不匹配,请检查本地设置的 App Key 是否与 App Server 端获取 token 的 App Key 一致。您可以通过融云开发者后台验证 Token 是否正确。
错误原因二:Token 已过期
Token 的有效期可以在开发者后台设置。如果 token 有效期设置的是非永久,您应该在连接方法 connect
返回 Token 错误 (31004) 时,再次通过您 App 的服务器向融云申请新的 Token, 然后使用新 token 再次连接。
错误原因三:项目中的 App Key 与 App 服务端的 App Key 不一致
项目中的 App Key 与 App 服务端的 App Key 不一致,导致 App 服务端返回的 Token 与客户端的 App Key 不匹配。
错误原因四:刷新了 App Secret
在融云开发者后台刷新了 App Secret,导致之前获取的所有 Token 失效。此时每个用户均需要重新申请 Token 才能新建连接。
伪代码示例
您应该在 connect()
回调 onError() errorcode
为 RC_CONN_TOKEN_INCORRECT
(31004) 时,再次去您的服务器获取新的 Token, 然后使用新 Token 再次 connect()
。伪代码如下:
RongIMClient.connect("用户Token", new RongIMClient.ConnectCallback() {
@Override
public void onDatabaseOpened(RongIMClient.DatabaseOpenStatus code) {
//消息数据库打开,可以进入到主页面
}
@Override
public void onSuccess(String s) {
//连接成功
}
@Override
public void onError(RongIMClient.ConnectionErrorCode errorCode) {
if(errorCode.equals(RongIMClient.ConnectionErrorCode.RC_CONN_TOKEN_INCORRECT)) {
//从 APP 服务获取新 token,并重连 (伪代码)
AppServer.getUserToken(() --> RongIMClient.connect(newToken));
} else {
//无法连接 IM 服务器,请根据相应的错误码作出对应处理
}
}
})