This is a native iOS Messenger app, with audio/video calls and realtime chat conversations (full offline support).
- CallKit support for audio and video calls
- Database management is powered by SyncEngine
- Works with MessageKit chat user interface
- Uses InputBarAccessoryView as chat input bar
- Supports native iOS Dark Mode
- Full source code is available for all features
- Video call (in-app video calling over data connection)
- Audio call (in-app audio calling over data connection)
- Message queue (creating new messages while offline)
- User last active (or currently online) status info
- Spotlight search for users
- Media download network settings (Wi-Fi, Cellular or Manual)
- Cache settings for media messages (automatic/manual cleanup)
- Media message re-download option
- Block users
- Forward messages
- Mute push notifications
- Home screen quick actions
- Share media message content
- Firebase Cloud Firestore backend (full realtime actions)
- Realm Database for local data (full offline availability)
- AES-256 encryption
- Live chat between multiple devices
- Private chat functionality
- Group chat functionality
- Push notification support
- No backend programming is needed
- Native and easy to customize user interface
- Login with Email
- Sending text messages
- Sending pictures
- Sending videos
- Sending audio messages
- Sending current location
- Sending stickers
- Sending large emojis
- Media file local cache
- Load earlier messages
- Typing indicator
- Message delivery receipt
- Message read receipt
- Save picture messages to device
- Save video messages to device
- Save audio messages to device
- Delete read and unread messages
- Realtime conversation view for ongoing chats
- Archived conversation view for archived chats
- All media view for chat media files
- Picture view for multiple pictures
- Map view for shared locations
- Basic Settings view included
- Basic Profile view for users
- Edit Profile view for changing user details
- Onboarding view on signup
- Wallpaper backgrounds for Chat view
- Privacy Policy view
- Terms of Service view
- Video length limit possibility
- Copy and paste text messages
- Arbitrary message sizes
- Send/Receive sound effects
- Supported devices: iPhone SE - iPhone 11 Pro Max
- iOS 13.0+
1., Run pod install
first (the CocoaPods Frameworks and Libraries are not included in the repo). If you haven't used CocoaPods before, you can get started here. You might prefer to use the CocoaPods app over the command-line tool.
2., Create an account at Firebase and create a new project for your application.
3., Set up your Firebase Authentication sign-in methods.
4., Enable your Firebase Cloud Firestore by updating the Database Rules with the default values.
5., Create an Index with these settings.
6., Enable your Firebase Storage by updating the Storage Rules with the default values.
7., Download GoogleService-Info.plist
from your Firebase project and replace the existing file in your Xcode project.
8., For using push notification feature, create an account at OneSignal and replace the ONESIGNAL_APPID
define value in AppConstant.h
. You will also need to configure your Push certificate details.
9., For using audio and video call features, create an account at Sinch and replace the SINCH_KEY
and SINCH_SECRET
define values in AppConstant.h
. You will also need to configure your VoIP certificate details.
Do you have any questions or an idea? My email is [email protected] or you can find some more info at relatedcode.com
MIT License
Copyright (c) 2020 Related Code
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.