Flutter 上如何轻松实现 IM 功能
在 Flutter 上实现 IM(即时通讯) 的功能,我们可以使用第三方的 SDK,比如腾讯云 IM等等。这些 SDK 都提供了丰富的 API,可以帮助我们快速实现 IM 的功能。
第三方 SDK 的选择
环信 IM Flutter SDK:github.com/easemob/im_…
网易 IM Flutter SDK:doc.yunxin.163.com/messaging/g…
腾讯 IM Flutter SDK:www.tencentcloud.com/document/pr…
其中 腾讯的 IM Flutter SDK 支持的端会比较多一些,包括 iOS、Android、Web、Windows、MacOS 等等。
SDK 也设计得比较灵活,你可以使用它提供的 UI
当然也可以自己来写,当然以很多人使用 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 UI:github.com/flyerhq/flu…
这个就是一个比较小而美的聊天 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