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 Podfile
the 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'
After 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 Cartfile
:
# ⚠️ Carthage support is currently experimental ⚠️
# For now, use the master branch until a Carthage-compatible
# tagged release is available.
github "robbiehanson/XMPPFramework" "master"
Run 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.framework
inXMPPFramework.xcodeproj
, and ensure any applicable header files are set to public. - Please try to write your code in a way that's testable. Using
XMPPMockStream
makes testing pretty easy. Look at examples inTesting-Shared
for inspiration. - You will need both CocoaPods and Carthage to work on tests. Run
carthage checkout
in the root of the repository, andbundle install && bundle exec pod install
in theTesting-iOS
andTesting-macOS
folders. - Create your test files to the
Testing-Shared
folder, and then add them to the iOS, macOS, and tvOS targets inTesting-Carthage/XMPPFrameworkTests.xcodeproj
,Testing-macOS/XMPPFrameworkTests.xcworkspace
andTesting-iOS/XMPPFrameworkTests.xcworkspace
.
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
Can't find the answer to your question in any of the wiki articles? Try the mailing list.
Love the project? Wanna buy me a ☕️? (or a 🍺 😀):