An XMPP Framework in Objective-C for the Mac and iOS development community.
XMPPFramework provides a core implementation of RFC-3920 (the XMPP standard), along with the tools needed to read & write XML. It comes with multiple popular extensions (XEP's), all built atop a modular architecture, allowing you to plug-in any code needed for the job. Additionally the framework is massively parallel and thread-safe. Structured using GCD, this framework performs well regardless of whether it's being run on an old iPhone, or on a 12-core Mac Pro. (And it won't block the main thread... at all)
The minimum deployment target is iOS 8.0 / macOS 10.9 / tvOS 9.0.
The easiest way to install XMPPFramework is using CocoaPods. Remember to add to the top of your
use_frameworks! line (even if you are not using swift):
This will install the whole framework with all the available extensions:
use_frameworks! pod 'XMPPFramework', '~> 3.7.0'
pod install open the
.xcworkspace and import:
import XMPPFramework // swift @import XMPPFramework; //objective-c
To integrate XMPPFramework into your Xcode project using Carthage, specify it in your
# ⚠️ Carthage support is currently experimental ⚠️ # For now, use the master branch until a Carthage-compatible # tagged release is available. github "robbiehanson/XMPPFramework" "master"
carthage to build the framework and drag the built
XMPPFramework.framework into your Xcode project.
Pull requests are welcome! If you are planning a larger feature, please open an issue first for community input. Please use modern Objective-C syntax, including nullability annotations and generics. Here's some tips to make the process go more smoothly:
- Make sure to add any new files to the iOS, macOS, and tvOS targets for
XMPPFramework.xcodeproj, and ensure any applicable header files are set to public.
- Please try to write your code in a way that's testable. Using
XMPPMockStreammakes testing pretty easy. Look at examples in
- You will need both CocoaPods and Carthage to work on tests. Run
carthage checkoutin the root of the repository, and
bundle install && bundle exec pod installin the
- Create your test files to the
Testing-Sharedfolder, and then add them to the iOS, macOS, and tvOS targets in
Looking to help but don't know where to start?
- A large portion of the framework is not yet annotated for nullability and generics.
- Adding more test coverage is always appreciated
- Modernizing the old Examples projects
If you find a security problem, please do not open a public issue on GitHub. Instead, email one of the maintainers directly:
For more info please take a look at the wiki.
- Overview of the XMPP Framework
- Getting started using XMPPFramework on Mac OS X
- Getting started using XMPPFramework on iOS
- XEPs supported by the XMPPFramework
- Learn more about XMPPFramework
Love the project? Wanna buy me a