零基础构建即时通讯开源项目OpenIM移动端-Flutter篇
【摘要】 OpenIM 为开发者提供开源即时通讯 SDK,作为 Twilio、Sendbird 等云服务的替代方案。借助 OpenIM,开发者可以构建安全可靠的即时通讯应用,如 WeChat、Zoom、Slack 等。本仓库基于开源版 OpenIM SDK 开发,提供了一款基于 Flutter 的即时通讯应用。您可以使用此应用程序作为 OpenIM SDK 的参考实现。开发环境在开始开发之前,请确保您...
OpenIM 为开发者提供开源即时通讯 SDK,作为 Twilio、Sendbird 等云服务的替代方案。借助 OpenIM,开发者可以构建安全可靠的即时通讯应用,如 WeChat、Zoom、Slack 等。
本仓库基于开源版 OpenIM SDK 开发,提供了一款基于 Flutter 的即时通讯应用。您可以使用此应用程序作为 OpenIM SDK 的参考实现。


在开始开发之前,请确保您的系统已安装以下软件:
操作系统:macOS 14.6 或更高版本
Flutter:版本 3.24.5(根据官网步骤进行安装)
Git:用于代码版本控制
同时,您需要确保已经部署了最新版本的 OpenIM Server。接下来,您可以编译项目并连接自己的服务端进行测试。
运行环境
本应用支持以下操作系统版本:
操作系统版本状态
iOS13.0 及以上✅
AndroidminSdkVersion 24✅
说明
Flutter:确保您的版本符合要求,以避免依赖问题。
快速开始
按照以下步骤设置本地开发环境:
拉取代码
git clone https://github.com/openimsdk/open-im-flutter-demo.git
cd open-im-flutter-demo
安装依赖
flutter clean
flutter pub get
修改配置
如果没有修改过服务端默认端口,则只需要修改_host为您的服务器 ip 即可。
static const _host = "your-server-ip or your-domain";
通过终端执行 flutter run 或者IDE的启动菜单来运行iOS/Android应用程序。
开始开发测试!
音视频通话
开源版支持一对一音视频通话,并且需要先部署并配置服务端。多人音视频通话、视频会议请联系邮箱 contact@openim.io
构建
该项目允许分别构建 iOS 应用程序和 Android 应用程序,但在构建过程中会有一些差异。
iOS:flutter build ipa
Android:flutter build apk
构建结果将位于 build 目录下。
功能列表
说明
功能模块功能项状态
账号功能手机号注册\邮箱注册\验证码登录✅
个人信息查看\修改✅
多语言设置✅
修改密码\忘记密码✅
好友功能查找\申请\搜索\添加\删除好友✅
同意\拒绝好友申请✅
好友备注✅
是否允许添加好友✅
好友列表\好友资料实时同步✅
黑名单功能限制消息✅
黑名单列表实时同步✅
添加\移出黑名单✅
群组功能创建\解散群组✅
申请加群\邀请加群\退出群组\移除群成员✅
群名/群头像更改/群资料变更通知和实时同步✅
群成员邀请进群✅
群主转让✅
群主、管理员同意进群申请✅
搜索群成员✅
消息功能离线消息✅
漫游消息✅
多端消息✅
历史消息✅
消息删除✅
消息清空✅
消息复制✅
单聊正在输入✅
新消息勿扰✅
清空聊天记录✅
新成员查看群聊历史消息✅
新消息提示✅
文本消息✅
图片消息✅
视频消息✅
表情消息✅
文件消息✅
语音消息✅
名片消息✅
地理位置消息✅
自定义消息✅
会话功能置顶会话✅
会话已读✅
会话免打扰✅
REST API认证管理✅
用户管理✅
关系链管理✅
群组管理✅
会话管理✅
消息管理✅
Webhook群组回调✅
消息回调✅
推送回调✅
关系链回调✅
用户回调✅
容量和性能1 万好友✅
10 万人大群✅
秒级同步✅
集群部署✅
互踢策略
在线状态所有平台不互踢✅
每个平台各只能登录一个设备✅
PC 端、移动端、Pad 端、Web 端、小程序端各只能登录一个设备✅
PC 端不互踢,其他平台总计一个设备✅
音视频通话一对一音视频通话✅
文件类对象存储支持私有化部署 minio✅
支持 COS、OSS、Kodo、S3 公有云✅
推送消息在线实时推送✅
消息离线推送,支持个推,Firebase✅
更多高级功能、音视频通话、视频会议 请联系邮箱 contact@openim.io
加入社区
常见问题
1. 是否支持多语言?
答:支持,默认跟随系统语言。
2. 支持哪些平台?
答:目前 Demo 支持 Android 和 iOS。
3. Android 安装包的 debug 版本可以运行,但 release 启动是白屏?
答:Flutter 的 release 包默认会进行混淆,可以使用以下命令:
flutter build release --no-shrink
如果此命令无效,可以在 android/app/build.gradle 文件的 release 配置中添加以下代码:
release {
minifyEnabled false
useProguard false
shrinkResources false
}
4. 如果代码必须混淆该怎么办?
答:在混淆规则中添加以下配置:
-keep class io.openim.**{*;}
-keep class open_im_sdk.**{*;}
-keep class open_im_sdk_callback.**{*;}
5. Android 安装包无法安装在模拟器上?
答:由于 Demo 移除了一些 CPU 架构,如果需要在模拟器上运行,请在 android/build.gradle 配置中添加以下内容:
ndk {
abiFilters "armeabi-v7a", "x86"
}
6. iOS 运行/打包 release 包时报错?
答:请将 CPU 架构设置为 arm64,然后按以下步骤操作:
执行 flutter clean
执行 flutter pub get
cd ios/
rm -f Podfile.lock
rm -rf Pods
执行 pod install
连接真机后运行 Archive。

7. iOS 最低运行版本是多少?
答:13.0
关于OpenIM
作为开源即时通讯(IM)领域的先驱,OpenIM 已在 GitHub 获得超过 15,000 star,。随着数据保护和隐私安全日益受到重视,越来越多的组织选择私有部署 IM 解决方案,这与国内软件行业的快速增长相得益彰。OpenIM几乎支持所有SDK,iOS、Android、Flutter、Uniapp、jssdk等。

github: 仓库地址
developer: 开发文档
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)