跳转至

连接服务

连接方法

说明

1 connect 方法在应用的生命周期里只需要调用一次,且必须在主进程调用。 2 连接失败,SDK 会自动启动重连机制,无需进行重连操作。 应用的生命周期:应用场长时间后台之后,应用被回收,此时属于新的进程,也需要调用 connect 方法。 自动重连机制:进行最多 10 次重连,分别是 1、2、4、8、16、32、64、128、256、512 秒后。若没有连接成功,还会在检测网络状态变化时再次重连。

connect 参数说明:

参数 类型 说明
Token String Token 即用户令牌,是 App 上当前用户连接融云的身份凭证
RongIMClient.ConnectCallback() Object callback`

回调方法说明:

回调方法名 说明
onTokenIncorrect Token 错误,请参考 Token 错误
onSuccess 连接成功,可进行页面跳转
onError 连接失败业务错误码,非业务错误码,可进行页面跳转
OnDatabaseOpened 打开本地数据库的回调

示例代码:

         RongIMClient.connect("用户Token", new RongIMClient.ConnectCallback() {
            @Override
            public void onTokenIncorrect() {

            }

            /**
             * 连接融云成功
             */
            @Override
            public void onSuccess(String userid) {

            }

            /**
             * 连接融云失败
             */
            @Override
            public void onError(RongIMClient.ErrorCode errorCode) {

            }
        });

注意

2.9.22 版本之后连接服务新增 OnDatabaseOpened 回调。

            RongIMClient.connect("用户Token", new RongIMClient.ConnectCallbackEx() {
                @Override
                public void OnDatabaseOpened(RongIMClient.DatabaseOpenStatus code) {

                }

                @Override
                public void onTokenIncorrect() {

                }

                @Override
                public void onSuccess(String s) {

                }

                @Override
                public void onError(RongIMClient.ErrorCode e) {

                }
            });

注意

当应用被杀死后,接受到推送通知,点击通知拉起应用时,此时应用被重新唤起,属于新的生命周期,所以需要再次调用 connect 方法进行连接。

自动重连互踢设置

用户没有开通多设备消息同步的前提下,同一个账号在一台新设备上登录的时候,会把这个账号在之前登录的设备上踢出。由于 SDK 有断线重连功能,存在下面情况:

用户在 A 设备登录,A 设备网络不稳定,导致断开连接 SDK 启动重连机制。用户此时又在 B 设备登录,B 设备连接成功。A 设备网络稳定之后,用户在 A 设备连接成功,B 设备被踢出。

为避免 A 重连后主动将 B 踢掉的情况,提供了设置接口,通过接口可设置网络重连后是否强行踢出已连接设备,文档如下:

注:此功能首先需要客户提工单,在服务端开通此功能后,客户端调用该方法才生效

设置如下:

/**
* 设置 enable 为 true 时,SDK 重连的时候发现此时已有别的设备连接成功,不再强行踢出已有设备,而是踢出重连设备。
*
* @param enable 是否踢出重连设备
*/
public void setReconnectKickEnable(final boolean enable)