全部文档

更新时间: 2021-03-08

# 设置状态监听

当 SDK 与融云服务器的连接状态发生变化时,开发者可通过下面方法进行处理。 实现此功能需要开发者监听 onConnectionStatusChange 回调。

# 参数说明
参数 类型 说明
status RCConnectionStatus SDK 与融云服务器的连接状态
# 代码示例
RongIMClient.onConnectionStatusChange = (int connectionStatus) {
      if (RCConnectionStatus.KickedByOtherClient == connectionStatus ||
          RCConnectionStatus.TokenIncorrect == connectionStatus ||
          RCConnectionStatus.UserBlocked == connectionStatus) {
        String toast = "连接状态变化 $connectionStatus, 请退出后重新登录";
        DialogUtil.showAlertDiaLog(context, toast,
            confirmButton: FlatButton(
                onPressed: () async {
                  SharedPreferences prefs =
                      await SharedPreferences.getInstance();
                  prefs.remove("token");
                  Navigator.of(context).pushAndRemoveUntil(
                      new MaterialPageRoute(
                          builder: (context) => new LoginPage()),
                      (route) => route == null);
                },
                child: Text("重新登录")));
      } else if (RCConnectionStatus.Connected == connectionStatus) {
        updateConversationList();
      }
    };
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 设置消息监听

当 SDK 在接收到消息时,开发者可通过下面方法进行处理。 SDK 会通过此方法接收包含单聊、群聊、聊天室、系统类型的所有消息,开发者只需全局设置一次即可,多次设置会导致其他代理失效。 实现此功能需要开发者实现消息监听回调。

# 参数说明

参数说明:

参数 类型 说明
message Message 当前接收到的消息
left int 还剩余的未接收的消息数
offline BOOL 是否是离线消息
hasPackage BOOL SDK 拉取服务器的消息以包( package )的形式批量拉取,有 package 存在就意味着远端服务器还有消息尚未被 SDK 拉取
# 代码示例

如果离线消息量不大,可以使用下面这个回调;

//消息接收回调
    RongIMClient.onMessageReceived = (Message msg,int left) {
      print("receive message messsageId:"+msg.messageId.toString()+" left:"+left.toString());
    };
已复制
1
2
3
4

下面这个回调是 SDK 分批拉取离线消息,当离线消息量巨大的时候,建议当 left == 0 且 hasPackage == false 时刷新会话列表:

//消息接收回调
    RongIMClient.onMessageReceivedWrapper = (Message msg, int left, bool hasPackage, bool offline) {
      print("receive message messsageId:"+msg.messageId.toString()+" left:"+left.toString());
    };
已复制
1
2
3
4

注:两个消息接收监听只能按需实现一个,如果两个都实现,可能会出现重复收到消息的情况

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助