All Projects → MessageKit → Messagekit

MessageKit / Messagekit

Licence: mit
A community-driven replacement for JSQMessagesViewController

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Messagekit

Jsqmessagesviewcontroller
An elegant messages UI library for iOS
Stars: ✭ 11,240 (+123.19%)
Mutual labels:  messaging, messenger, message, viewcontroller, jsqmessagesviewcontroller
Falconmessenger
🌟🌟🌟🌟🌟 Falcon Messenger is a Fast and Beautiful cloud-based messaging app. With iOS and IPadOS Support. Available on the App Store.
Stars: ✭ 310 (-93.84%)
Mutual labels:  messaging, messenger, message
Applozic Ios Sdk
iOS Real Time Chat & Messaging SDK
Stars: ✭ 104 (-97.93%)
Mutual labels:  messaging, messenger, message
teamgram-server
Unofficial open source mtproto server written in golang with compatible telegram client.
Stars: ✭ 910 (-81.93%)
Mutual labels:  messaging, messenger
whatsapp-bot
Made with Python and Selenium, can be used to send multiple messages and send messages as characters made of emojis
Stars: ✭ 34 (-99.32%)
Mutual labels:  messaging, message
netbout
Private talks made easy
Stars: ✭ 40 (-99.21%)
Mutual labels:  messaging, messenger
facebook-send-api-emulator
Facebook Messenger Emulator & Facebook Send API Emulator functionality allowing you to test web hooks on developer's machine.
Stars: ✭ 24 (-99.52%)
Mutual labels:  messaging, messenger
iGap-Plus
An alternative official version iGap messenger client
Stars: ✭ 20 (-99.6%)
Mutual labels:  messaging, messenger
messaging-apis
Messaging APIs for multi-platform
Stars: ✭ 1,759 (-65.07%)
Mutual labels:  messaging, messenger
Messenger Ios Chat Swift Firestore
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift
Stars: ✭ 405 (-91.96%)
Mutual labels:  messaging, messenger
Bottender
⚡️ A framework for building conversational user interfaces.
Stars: ✭ 3,803 (-24.48%)
Mutual labels:  messaging, messenger
Franz
Franz is a free messaging app for services like WhatsApp, Slack, Messenger and many more.
Stars: ✭ 4,088 (-18.82%)
Mutual labels:  messaging, messenger
iGap-Android
iGap Client for Android Source Code
Stars: ✭ 54 (-98.93%)
Mutual labels:  messaging, messenger
WatsonWebsocket
A simple C# async websocket server and client for reliable transmission and receipt of data
Stars: ✭ 158 (-96.86%)
Mutual labels:  messaging, message
Messaging-Services-Comparison
A comparison of messaging services and protocols.
Stars: ✭ 59 (-98.83%)
Mutual labels:  messaging, messenger
super-mario-message
Display custom messages in a Super Mario Bros environment
Stars: ✭ 18 (-99.64%)
Mutual labels:  messaging, message
iGap-iOS
iGap Client for iOS Source Code
Stars: ✭ 18 (-99.64%)
Mutual labels:  messaging, messenger
Messenger
iOS - Real-time messaging app 🎨
Stars: ✭ 491 (-90.25%)
Mutual labels:  messaging, messenger
Ferdi
🧔🏽 Ferdi helps you organize how you use your favourite apps by combining them into one application
Stars: ✭ 4,089 (-18.8%)
Mutual labels:  hacktoberfest, messenger
WatsonCluster
A simple C# class using Watson TCP to enable a one-to-one high availability cluster.
Stars: ✭ 18 (-99.64%)
Mutual labels:  messaging, message

A community-driven replacement for JSQMessagesViewController https://messagekit.github.io

Tests Build framework Build example app Danger

codecov Swift CocoaPods Xcode Xcode MIT Contributions Welcome

Goals

  • Provide a 🚨safe🚨 environment for others to learn and grow through Open Source.
  • Make adding Chat💬 to a project easy.
  • Enable beautiful and customizable Chat UI's.
  • Provide an awesome Open Source project for the iOS open source community.
  • Help others learn.

Vision

See VISION.md for Goals, Scope, & Technical Considerations.

Installation

CocoaPods Recommended

# Swift 5.3
pod 'MessageKit'

For Swift 5.0 use version 3.3.0

# Swift 5.0
pod 'MessageKit', '~> 3.3.0'

For Swift 4.2 use version 3.0.0

# Swift 4.2
pod 'MessageKit', '~> 3.0.0'

Swift Package Manager

Swift 5.3 in Xcode 12 added support for assets in Swift Packages. You can just add MessageKit package to your project by entering it's repository URL

https://github.com/MessageKit/MessageKit

Older versions of Swift and XCode don't support MessageKit via SPM.

Manual

Requirements

  • iOS 12 or later
  • Swift 5.3 or later

For iOS 11 please use version 3.3.0

For iOS 9 and iOS 10 please use version 3.1.1

Getting Started

Cell Structure

Each default cell is a subclass of MessageContentCell which has 7 parts. From top down we have a: cellTopLabel, messageTopLabel, messageContainerView, messageBottomLabel, cellBottomLabel with the avatarView and accessoryView on either side respectively. Above we see the basic TextMessageCell which uses a MessageLabel as its main content.

This structure will allow you to create a layout that suits your needs as you can customize the size, appearance and padding of each. If you need something more advanced you can implement a custom cell, which we show how to do in the Example project.

MessageInputBar Structure

The MessageInputBar, derived from InputBarAccessoryView is a flexible and robust way of creating any kind of input layout you wish. It is self-sizing which means as the user types it will grow to fill available space. It is centered around the middleContentView which by default holds the InputTextView. This is surrounded by InputStackView's that will also grow in high based on the needs of their subviews intrinsicContentSize. See the Example project for examples on how to tailor the layout for your own needs.

Guides

Please have a look at the Quick Start guide and the FAQs.

We recommend you start by looking at the Example project or write a question with the "messagekit" tag on Stack Overflow. You can also look at previous issues here on GitHub with the "Question" tag.

For more on how to use the MessageInputBar, see the dependency it is based on InputBarAccessoryView. You can also see this short guide

Default Cells

The type of cell rendered for a given message is based on the MessageKind

public enum MessageKind {
    case text(String) // TextMessageCell
    case attributedText(NSAttributedString) // TextMessageCell
    case photo(MediaItem) // MediaMessageCell
    case video(MediaItem) // MediaMessageCell
    case location(LocationItem) // LocationMessageCell
    case emoji(String) // TextMessageCell
    case audio(AudioItem) // AudioMessageCell
    case contact(ContactItem) // ContactMessageCell
    case linkPreview(LinkItem) // LinkPreviewMessageCell

    /// A custom message.
    /// - Note: Using this case requires that you implement the following methods and handle this case:
    ///   - MessagesDataSource: customCell(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> UICollectionViewCell
    ///   - MessagesLayoutDelegate: customCellSizeCalculator(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> CellSizeCalculator
    case custom(Any?)
}

If you choose to use the .custom kind you are responsible for all of the cells layout. Any UICollectionViewCell can be returned for custom cells which means any of the styling you provide from the MessageDisplayDelegate will not effect your custom cell. Even if you subclass your cell from MessageContentCell. Read more about custom cells

Read more about the cases on the Quick Start guide.

Contributing

Great! Look over these things first.

What's Next?

Check out the Releases to see what we are working on next.

Contact

Have a question or an issue about MessageKit? Create an issue!

Interested in contributing to MessageKit? Click here to join our Slack.

Apps using this library

Add your app to the list of apps using this library and make a pull request.

Please provide attribution, it is greatly appreciated.

Core Team

Thanks

Many thanks to the contributors of this project.

License

MessageKit is released under the MIT License.

Inspiration

Inspired by JSQMessagesViewController 👈 💯

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].