Skip to content

openimsdk/openim-flutter-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

18 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

OpenIM Flutter ๐Ÿ’ฌ๐Ÿ’ป

OpenIM Docs โ€ข OpenIM Server โ€ข openim-sdk-flutter โ€ข openim-sdk-core

OpenIM provides an open-source Instant Messaging (IM) SDK for developers, serving as an alternative solution to cloud services like Twilio and Sendbird. With OpenIM, developers can build secure and reliable IM applications similar to WeChat, Zoom, and Slack.

This repository is based on the open-source version of the OpenIM SDK, offering an Flutter IM application. You can use this application as a reference implementation of the OpenIM SDK.

Preview Preview

License ๐Ÿ“„

This repository is licensed under the GNU Affero General Public License Version 3 (AGPL-3.0) and is subject to additional terms. Commercial use is prohibited. For more details, see here.

Development Environment

Before you start development, ensure that the following software is installed on your system:

  • Operating System: macOS 15 or later
  • Flutter: Version 3.32.8 (Installation Guide), XCode: 16.1, Android Studio: Koala | 2024.1.1 Patch 1, JDK 17
  • Git: For version control

Additionally, make sure you have deployed the latest version of the OpenIM Server. After deployment, you can compile the project and connect it to your server for testing.

Supported Platforms

This application supports the following platforms:

Platform Version Status
iOS 13.0 and above โœ…
Android minSdkVersion 24 โœ…

Notes

  • Flutter: Ensure your version meets the requirements to avoid dependency issues.

Quick Start

Follow the steps below to set up your local development environment:

  1. Clone the repository:

    git clone https://github.com/openimsdk/openim-flutter-demo.git
    cd openim-flutter-demo
  2. Install dependencies

    flutter clean
    flutter pub get
  3. Modify the configuration

    If you have not changed the default server ports, update only the _host to your server IP.

    static const _host = "your-server-ip or your-domain";
  4. Run the application using flutter run from the terminal or through your IDE.

  5. Start developing and testing! ๐ŸŽ‰

Audio/Video Calls

The open-source version supports one-to-one audio and video calls. You need to first deploy and configure the server. For multi-party audio/video calls or video conferencing, please contact us at contact@openim.io.

Build ๐Ÿš€

This project allows building separate iOS and Android applications with some differences in the process.

  • iOS:
    flutter build ipa
  • Android:
    flutter build apk
  1. The build artifacts will be located in the build directory.

Features

Description

Feature Module Feature Status
Account Features Phone number registration \ Email registration \ Verification code login โœ…
View \ Edit personal information โœ…
Multi-language settings โœ…
Change password \ Forgot password โœ…
Friend Features Find \ Apply \ Search \ Add \ Delete friends โœ…
Accept \ Reject friend requests โœ…
Friend notes โœ…
Allow friend requests or not โœ…
Friend list \ Friend data real-time syncing โœ…
Blocklist Restrict messages โœ…
Real-time syncing of blocklist โœ…
Add \ Remove from blocklist โœ…
Group Features Create \ Dismiss groups โœ…
Apply to join \ Invite to join \ Leave group \ Remove members โœ…
Group name / Avatar changes / Group data updates (notifications, real-time sync) โœ…
Invite members to group โœ…
Transfer group ownership โœ…
Group owner or admin approve join requests โœ…
Search group members โœ…
Message Features Offline messages โœ…
Roaming messages โœ…
Multi-end messages โœ…
Message history โœ…
Message deletion โœ…
Clear messages โœ…
Copy messages โœ…
Typing indicator in single chat โœ…
Do Not Disturb for new messages โœ…
Clear chat history โœ…
New members can view group chat history โœ…
New message reminders โœ…
Text messages โœ…
Image messages โœ…
Video messages โœ…
Emoji messages โœ…
File messages โœ…
Voice messages โœ…
Contact card messages โœ…
Location messages โœ…
Custom messages โœ…
Conversation Pin conversation โœ…
Mark conversation as read โœ…
Mute conversation โœ…
REST API Authentication management โœ…
User management โœ…
Relationship chain management โœ…
Group management โœ…
Conversation management โœ…
Message management โœ…
Webhook Group callbacks โœ…
Message callbacks โœ…
Push callbacks โœ…
Relationship callbacks โœ…
User callbacks โœ…
Capacity & Performance 10,000 friends โœ…
100,000-member supergroup โœ…
Second-level syncing โœ…
Cluster deployment โœ…
Multi-device kick-out strategy
Online Status No mutual kick-out across all platforms โœ…
Each platform can only log in with one device โœ…
PC, Mobile, Pad, Web, Mini Program each can log in with one device โœ…
PC not mutually kicked, only one device total for other platforms โœ…
Audio/Video Call One-to-one audio and video calls โœ…
File Storage Supports private Minio deployment โœ…
Supports public cloud services COS, OSS, Kodo, S3 โœ…
Push Real-time online message push โœ…
Offline message push, supports Getui, Firebase โœ…

For more advanced features, audio/video calls, or video conferences, please contact us at contact@openim.io.

Join Our Community ๐Ÿ‘ฅ

FAQ

1. Does it support multiple languages?

A: Support, follow the system language by default

2. Which platforms are supported?

A: The demo currently supports android and ios.

3. The debug of the android installation package can run, but the release starts with a white screen?

A: The release package of flutter is obfuscated by default. You can use the command: flutter build release --no -shrink. If this command is invalid, you can do the following

Add the following configuration to the release configuration configured in android/app/build.gradle

release {
    minifyEnabled false
    useProguard false
    shrinkResources false
}
4. What should I do if the code must be confused?

A: Add the following rules to the obfuscation rules

-keep class io.openim.**{*;}
-keep class open_im_sdk.**{*;}
-keep class open_im_sdk_callback.**{*;}
5. The android installation package cannot be installed on the emulator?

A: Because the Demo has removed some cpu architectures, if you want to run it on the emulator, please do the following:

Add in android/build.gradle configuration

ndk {
    abiFilters "armeabi-v7a",  "x86"
}
6, ios run/build release package error

A: Please set the CPU architecture to arm64, and then operate as follows

  • flutter clean
  • flutter pub get
  • cd ios
  • rm -f Podfile.lock
  • rm -rf Pods
  • pod install
  • Run Archive after connecting to the real device

ios cpu

7. What is the minimum version number for ios to run?

A: 13.0

8. Why is the map not working?

A: Doc

9. Why is offline push not working?

A: Doc

Packages

 
 
 

Contributors

โšก