JetChat
A simple imitation of WeChat chat application written in Swift5.0, which perfectly supports emoticon keyboard, single chat, group chat, local message session cache, circle of friends, day and night theme modes
Examples
chat | Moments |
---|
| |
Night mode | day mode |
---|
| |
Main technical applications
- The chat function adopts RxSwift+MVVM responsive architecture design, and reasonably transitions message data through ViewModel to reduce the business calculation of the Controller layer.
- UITableView+FDTemplateLayoutCell implements cell height adaptive calculation and caching, improving list sliding smoothness
- WCDBSwift implements fast caching of all session messages
- Based on IGList data driver, realize high frame rate friend circle list sliding
- RxTheme adapts to night mode and is compatible with iOS13 following system mode settings
- SnapKit pure code automatic layout
Main functions
- Chat room keyboard control encapsulation processing, supports multi-line input of emoticons, and supports iOS13
- User: Add friends, add groups, modify user notes and names, local real-time synchronization
- Chat: one-to-one chat, one-to-many group chat, supports text, video, picture sending and forwarding, picture and video browsing
- Conversation: Recent chat conversation records, displayed in a list sorted by the most recent time
- Corner: display the number of unread messages in a single session, display the number of all unread messages
- Clear: delete a single message, exit the group, delete friends, clear message session icons, delete records
At present, the basic functions have been completed. To learn about the specific functions, you can download the source code and run it at https://github.com/developerjet/JetChat
New features
- Moments: IGList implements high frame rate sliding of the Moments list
- Dark mode: RxTheme implements day and night theme mode switching and is compatible with iOS13 following system mode settings
- Widget: Add a recent chat widget. Click on the Widget to jump to the chat room [note the AppGroupsID configuration]
- Multi-language switching: English translation has been added
Tips
- If you have better suggestions and optimization solutions for this project or need to add any interesting features, please submit them in lssues.
- Xcode15 running error: SDK does not contain 'libarclite', solution https://www.jianshu.com/p/6f3798d1de0e
Licensed under the MIT licenses
- If you are interested in this project or it helps you, I hope you can give me a ?Star?, thank you very much❤️