likes
comments
collection
share

Flutter 上如何轻松实现 IM 功能

作者站长头像
站长
· 阅读数 35

在 Flutter 上实现 IM(即时通讯) 的功能,我们可以使用第三方的 SDK,比如腾讯云 IM等等。这些 SDK 都提供了丰富的 API,可以帮助我们快速实现 IM 的功能。

第三方 SDK 的选择

环信 IM Flutter SDKgithub.com/easemob/im_…

网易 IM Flutter SDKdoc.yunxin.163.com/messaging/g…

腾讯 IM Flutter SDKwww.tencentcloud.com/document/pr…

其中 腾讯的 IM Flutter SDK 支持的端会比较多一些,包括 iOS、Android、Web、Windows、MacOS 等等。

Flutter 上如何轻松实现 IM 功能

SDK 也设计得比较灵活,你可以使用它提供的 UI

Flutter 上如何轻松实现 IM 功能 当然也可以自己来写,当然以很多人使用 Flutter 的初衷来看,我感觉多半是会自己来写 UI 的。

另外,腾讯的 IM 除了基本的聊天能力之外,还有一些高级功能,比如群聊语音通话视频通话发送文件等等。当然离线推送消息撤回、消息已读等等功能也都是具备的。

比如,发送消息:

import 'package:tencent_cloud_chat_sdk/tencent_cloud_chat_sdk.dart';

V2TimValueCallback<V2TimMsgCreateInfoResult> createMessage =
      await TencentImSDKPlugin.v2TIMManager
          .getMessageManager()
          .createTextMessage(text: "The text to create");

String id = createMessage.data!.id!; // The message creation ID

V2TimValueCallback<V2TimMessage> res = await TencentImSDKPlugin.v2TIMManager
      .getMessageManager()
      .sendMessage(
          id: id, // Pass in the message creation ID to
          receiver: "The userID of the destination user",
          groupID: "The groupID of the destination group",
          );

聊天 UI 相关的

当然,除了像腾讯这样的 IM SDK 之外,还有一些第三方的 UI 库,比如:

Flutter Chat UIgithub.com/flyerhq/flu…

Flutter 上如何轻松实现 IM 功能

这个就是一个比较小而美的聊天 UI 库,你可以直接使用它提供的 UI,也可以根据自己的需求来进行定制。人家也说了,IM 不仅仅是 UI,但是也离不开 UI,所以,他们将这两方面做了解耦,目的就是减少重复的工作,当然,他们的 UI 可不仅仅提供了 Flutter 的版本,还是有 React Native 的版本的。

这个对应的 UI库提供了一个开源的 IM 后端实现,是基于 Firebase的,因此,这玩意可能在某些区域不太好使。

另外这个 UI 库提供的消息类型也比较单一哈,目前就支持了文本图片文件三个类型,不过好在人家是开源的,你需要扩展那还不是分分钟的事情。

个人看法

在 Flutter 上实现一个 IM 功能,如果从零开始整,带价其实挺大的,一个基本可用的 IM 也至少需要包含以下几个模块:

  • 用户管理:用户注册、登录、用户信息修改等
  • 好友管理:好友添加、删除、好友列表等
  • 消息管理:消息发送、接收、消息撤回、消息已读等
  • 离线推送:用户离线时,消息的推送
  • 文件传输:图片、文件的传输
  • 语音通话:语音通话功能
  • 本地存储:消息的本地存储

这些功能都是比较基础的,如果要实现一个完整的 IM 功能,还需要考虑更多的功能,比如群聊、视频通话、等等。

一些建议

IM 已经是很成熟的产品了,如果你只是想实现一个简单的 IM 功能,那么推荐使用大厂的 IM SDK,然后自己定制化一下 UI ,甚至直接使用IM SDK 自带的 UI 都 ok,这样可以节省比较多的时间,同时极大程度上保证了消息收发的稳定性。

欢迎关注公众号 老码沉思录 ,同步我的最近思考

转载自:https://juejin.cn/post/7369165462570467365
评论
请登录