robbiehanson / XMPPFramework

An XMPP Framework in Objective-C for Mac and iOS
Other
5.91k stars 2.09k forks source link

XMPPFramework

XMPPFramework

Build Status Version Status Carthage compatible Platform License (3-Clause BSD)

An XMPP Framework in Objective-C for the Mac and iOS development community.

Abstract

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)

Install

The minimum deployment target is iOS 8.0 / macOS 10.9 / tvOS 9.0.

Migration from 3.7 to 4.0

There have been a number of changes to the public API of XMPPFramework in an attempt to improve the ergnomics and safety when used with Swift. Most Objective-C projects should require no changes, with a few minor exceptions. Many (simple) changes will be required for pure Swift projects, mostly due to the new nullability annotations. The process is still not complete so please submit issues and help if possible to minimize future breaking changes.

Swift Support

XMPPFramework is now accepting contributions written in Swift, with some limitations. Swift code must be isolated in the Swift/ folder, and none of the existing or future Obj-C code may depend upon it. All public APIs written in Swift must be Obj-C compatible and marked with @objc.

See the Contributing section below for more details.

CocoaPods

The easiest way to install XMPPFramework is using CocoaPods.

To install only the Objective-C portion of the framework:

pod 'XMPPFramework'

To use the new Swift additions:

use_frameworks!
pod 'XMPPFramework/Swift'

After pod install open the .xcworkspace and import:

@import XMPPFramework;   // Objective-C
import XMPPFramework     // Swift

Carthage

To integrate XMPPFramework into your Xcode project using Carthage, specify it in your Cartfile:

github "robbiehanson/XMPPFramework"

Run carthage to build the framework and drag the built XMPPFramework.framework into your Xcode project. If you'd like to include new features written in Swift, drag XMPPFrameworkSwift.framework into your project as well. You'll need to manually import XMPPFrameworkSwift in your headers.

Contributing

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:

Looking to help but don't know where to start?

Security Issues

If you find a security problem, please do not open a public issue on GitHub. Instead, email one of the maintainers directly:

Wiki:

For more info please take a look at the wiki.

Can't find the answer to your question in any of the wiki articles? Try the mailing list.

Donation:

Love the project? Wanna buy me a ☕️? (or a 🍺 😀):

donation-bitcoin donation-paypal