全部文档

更新时间: 2021-03-08

# 导入 SDK

在项目的 pubspec.yaml 中写如下依赖

dependencies:
  flutter:
    sdk: flutter

rongcloud_im_plugin: ^4.0.2+1
已复制
1
2
3
4
5

然后在项目路径执行 flutter packages get 来下载 Flutter Plugin

可以在 Flutter 仓库 (opens new window) 或者 Flutter 仓库国内镜像服务 (opens new window) 查看历史版本

# 初始化

  1. 使用 SDK 功能前,需要 import 下面的头文件

import 'package:rongcloud_im_plugin/rongcloud_im_plugin.dart';

  1. 请使用开发功能之前从融云开发者后台 (opens new window)注册得到的 Appkey,通过 RCIMClient 的单例,传入 initWithAppKey: 方法,初始化 SDK。
  2. 开发者在使用融云 SDK 所有功能之前,开发者必须先调用此方法初始化 SDK。 在 App 的整个生命周期中,开发者只需要将 SDK 初始化一次。
RongIMClient.init(RongAppKey);
已复制
1

# 连接融云

  1. Token 即用户令牌,相当于您 APP 上当前用户连接融云的身份凭证。在您连接融云服务器之前,您需要请求您的 App Server,您的 App Server 通过融云 Server API 获取 Token 并返回给您的客户端,客户端获取到这个 Token 即可连接融云服务器。
  2. code 连接状态码,0 代表连接成功。
  3. userId 连接成功的用户 id;

注:如果 code == 31004 即过 Token 无效,是因为您在开发者后台设置了 Token 过期时间或者 Token 和初始化的 AppKey 不同环境,您需要请求您的服务器重新获取 Token 并再次用新的 Token 建立连接。

RongIMClient.connect(RongIMToken, (int code, String userId) {
  print('connect result ' + code.toString());
  if (code == 0) {
    print("connect success userId" + userId);
    // 连接成功后打开数据库
    // _initUserInfoCache();
  } else if(code == 31004) {
    // token 非法,需要重新从 APP 服务获取新 token 并连接
  }
}
已复制
1
2
3
4
5
6
7
8
9
10

# 获取会话列表

获取到所有单聊会话,如果需要获取更多会话类型的会话,可以增加数组中的会话类型对象。

onGetConversationList() async {
    List conversationList = await RongIMClient.getConversationList([RCConversationType.Private,RCConversationType.Group,RCConversationType.System]);

    for(Conversation con in cons) {
      print("conversation latestMessageId " + con.latestMessageId.toString());
    }
  }
已复制
1
2
3
4
5
6
7

可以参考此处 conversation_list_page.dart (opens new window)

# 发送消息

onSendMessage() async{
      TextMessage txtMessage = new TextMessage();
      txtMessage.content = "这条消息来自 Flutter";
      Message msg = await RongIMClient.sendMessage(RCConversationType.Private, privateUserId, txtMessage);
      print("send message start senderUserId = "+msg.senderUserId);
  }
已复制
1
2
3
4
5
6

# 接收消息

//消息发送结果回调
    RongIMClient.onMessageSend = (int messageId,int status,int code) {
      print("send message messsageId:"+messageId.toString()+" status:"+status.toString()+" code:"+code.toString());
    };
已复制
1
2
3
4

# 获取历史消息

  1. 从本地数据库中获取历史消息。
  2. messageId-1 即从最新的一条消息开始获取。
  3. count 即获取消息的数量。
  4. RongIMClient 类中还有其他获取历史消息的接口,可根据自己的需求调用。
  5. 如需从融云的服务器拉取历史消息,需要开通 IM 商用版 - 单群聊云存储 (opens new window) 功能。
onGetHistoryMessages() async {
    List msgs = await RongIMClient.getHistoryMessage(RCConversationType.Private, privateUserId, 0, 10);
    print("get history message");
    for(Message m in msgs) {
      print("sentTime = "+m.sentTime.toString());
    }
  }
已复制
1
2
3
4
5
6
7

# 断开连接

  1. 断开融云连接后不会再收到消息。
  2. 在下次连接融云成功后,会收取上次离线后的消息,离线消息最多可以保存 7 天。
//needPush 断开连接之后是否需要远程推送
RongIMClient.disconnect(bool needPush)
已复制
1
2

文档是否解决您的问题 ?

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