OpenIM 為開發(fā)者提供開源即時(shí)通訊?SDK,作為 Twilio、Sendbird 等云服務(wù)的替代方案。借助 OpenIM,開發(fā)者可以構(gòu)建安全可靠的即時(shí)通訊應(yīng)用,如 WeChat、Zoom、Slack 等。
本倉(cāng)庫(kù)基于開源版 OpenIM SDK 開發(fā),提供了一款基于 Flutter 的即時(shí)通訊應(yīng)用。您可以使用此應(yīng)用程序作為 OpenIM SDK 的參考實(shí)現(xiàn)。


在開始開發(fā)之前,請(qǐng)確保您的系統(tǒng)已安裝以下軟件:
操作系統(tǒng):macOS 14.6 或更高版本
Flutter:版本 3.24.5(根據(jù)官網(wǎng)步驟進(jìn)行安裝)
Git:用于代碼版本控制
同時(shí),您需要確保已經(jīng)部署了最新版本的 OpenIM Server。接下來(lái),您可以編譯項(xiàng)目并連接自己的服務(wù)端進(jìn)行測(cè)試。
運(yùn)行環(huán)境
本應(yīng)用支持以下操作系統(tǒng)版本:
操作系統(tǒng)版本狀態(tài)
iOS13.0 及以上?
AndroidminSdkVersion 24?
說(shuō)明
Flutter:確保您的版本符合要求,以避免依賴問(wèn)題。
快速開始
按照以下步驟設(shè)置本地開發(fā)環(huán)境:
拉取代碼
git clone https://github.com/openimsdk/open-im-flutter-demo.git
? cd open-im-flutter-demo
安裝依賴
flutter clean
? flutter pub get
修改配置
如果沒有修改過(guò)服務(wù)端默認(rèn)端口,則只需要修改_host為您的服務(wù)器 ip 即可。
static const _host = "your-server-ip or your-domain";
通過(guò)終端執(zhí)行?flutter run?或者IDE的啟動(dòng)菜單來(lái)運(yùn)行iOS/Android應(yīng)用程序。
開始開發(fā)測(cè)試!
音視頻通話
開源版支持一對(duì)一音視頻通話,并且需要先部署并配置服務(wù)端。多人音視頻通話、視頻會(huì)議請(qǐng)聯(lián)系郵箱?contact@openim.io
構(gòu)建
該項(xiàng)目允許分別構(gòu)建 iOS 應(yīng)用程序和 Android 應(yīng)用程序,但在構(gòu)建過(guò)程中會(huì)有一些差異。
iOS:flutter build ipa
Android:flutter build apk
構(gòu)建結(jié)果將位于?build?目錄下。
功能列表
說(shuō)明
功能模塊功能項(xiàng)狀態(tài)
賬號(hào)功能手機(jī)號(hào)注冊(cè)\郵箱注冊(cè)\驗(yàn)證碼登錄?
個(gè)人信息查看\修改?
多語(yǔ)言設(shè)置?
修改密碼\忘記密碼?
好友功能查找\申請(qǐng)\搜索\添加\刪除好友?
同意\拒絕好友申請(qǐng)?
好友備注?
是否允許添加好友?
好友列表\好友資料實(shí)時(shí)同步?
黑名單功能限制消息?
黑名單列表實(shí)時(shí)同步?
添加\移出黑名單?
群組功能創(chuàng)建\解散群組?
申請(qǐng)加群\邀請(qǐng)加群\退出群組\移除群成員?
群名/群頭像更改/群資料變更通知和實(shí)時(shí)同步?
群成員邀請(qǐng)進(jìn)群?
群主轉(zhuǎn)讓?
群主、管理員同意進(jìn)群申請(qǐng)?
搜索群成員?
消息功能離線消息?
漫游消息?
多端消息?
歷史消息?
消息刪除?
消息清空?
消息復(fù)制?
單聊正在輸入?
新消息勿擾?
清空聊天記錄?
新成員查看群聊歷史消息?
新消息提示?
文本消息?
圖片消息?
視頻消息?
表情消息?
文件消息?
語(yǔ)音消息?
名片消息?
地理位置消息?
自定義消息?
會(huì)話功能置頂會(huì)話?
會(huì)話已讀?
會(huì)話免打擾?
REST API認(rèn)證管理?
用戶管理?
關(guān)系鏈管理?
群組管理?
會(huì)話管理?
消息管理?
Webhook群組回調(diào)?
消息回調(diào)?
推送回調(diào)?
關(guān)系鏈回調(diào)?
用戶回調(diào)?
容量和性能1 萬(wàn)好友?
10 萬(wàn)人大群?
秒級(jí)同步?
集群部署?
互踢策略
在線狀態(tài)所有平臺(tái)不互踢?
每個(gè)平臺(tái)各只能登錄一個(gè)設(shè)備?
PC 端、移動(dòng)端、Pad 端、Web 端、小程序端各只能登錄一個(gè)設(shè)備?
PC 端不互踢,其他平臺(tái)總計(jì)一個(gè)設(shè)備?
音視頻通話一對(duì)一音視頻通話?
文件類對(duì)象存儲(chǔ)支持私有化部署 minio?
支持 COS、OSS、Kodo、S3?公有云?
推送消息在線實(shí)時(shí)推送?
消息離線推送,支持個(gè)推,F(xiàn)irebase?
更多高級(jí)功能、音視頻通話、視頻會(huì)議 請(qǐng)聯(lián)系郵箱?contact@openim.io
加入社區(qū)
常見問(wèn)題
1. 是否支持多語(yǔ)言?
答:支持,默認(rèn)跟隨系統(tǒng)語(yǔ)言。
2. 支持哪些平臺(tái)?
答:目前 Demo 支持 Android 和 iOS。
3. Android 安裝包的 debug 版本可以運(yùn)行,但 release 啟動(dòng)是白屏?
答:Flutter 的 release 包默認(rèn)會(huì)進(jìn)行混淆,可以使用以下命令:
flutter build release --no-shrink
如果此命令無(wú)效,可以在 android/app/build.gradle?文件的 release 配置中添加以下代碼:
release {
? ? ? minifyEnabled false
? ? ? useProguard false
? ? ? shrinkResources false
? }
4. 如果代碼必須混淆該怎么辦?
答:在混淆規(guī)則中添加以下配置:
-keep class io.openim.**{*;}
? -keep class open_im_sdk.**{*;}
? -keep class open_im_sdk_callback.**{*;}
5. Android 安裝包無(wú)法安裝在模擬器上?
答:由于 Demo 移除了一些 CPU 架構(gòu),如果需要在模擬器上運(yùn)行,請(qǐng)?jiān)?android/build.gradle 配置中添加以下內(nèi)容:
ndk {
? ? ? abiFilters "armeabi-v7a",? "x86"
? }
6. iOS 運(yùn)行/打包 release 包時(shí)報(bào)錯(cuò)?
答:請(qǐng)將 CPU 架構(gòu)設(shè)置為 arm64,然后按以下步驟操作:
執(zhí)行 flutter clean
? 執(zhí)行 flutter pub get
? cd ios/
? rm -f Podfile.lock
? rm -rf Pods
? 執(zhí)行 pod install
? 連接真機(jī)后運(yùn)行 Archive。

7. iOS 最低運(yùn)行版本是多少?
答:13.0
關(guān)于OpenIM
作為開源即時(shí)通訊(IM)領(lǐng)域的先驅(qū),OpenIM 已在 GitHub 獲得超過(guò) 15,000 star,。隨著數(shù)據(jù)保護(hù)和隱私安全日益受到重視,越來(lái)越多的組織選擇私有部署 IM 解決方案,這與國(guó)內(nèi)軟件行業(yè)的快速增長(zhǎng)相得益彰。OpenIM幾乎支持所有SDK,iOS、Android、Flutter、Uniapp、jssdk等。

github:?倉(cāng)庫(kù)地址
developer:?開發(fā)文檔