You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
0 B

MQTT-Client-Framework
=====================
an Objective-C native MQTT Framework http://mqtt.org
### Tested with
* mosquitto
* paho
* rabbitmq
* hivemq
* rsmb
* mosca
* vernemq
* emqtt
* moquette
* ActiveMQ
* Apollo
* CloudMQTT
* aws
* hbmqtt (MQTTv311 only, limitations)
### As a CocoaPod
Use the CocoaPod MQTTClient!
Add this to your Podfile:
```
pod 'MQTTClient'
```
which is a short for
```
pod 'MQTTClient/Min'
pod 'MQTTClient/Manager'
```
The Manager subspec includes the MQTTSessionManager class.
Additionally add this subspec if you want to use MQTT over Websockets:
```
pod 'MQTTClient/Websocket'
```
If you want to do your logging with CocoaLumberjack (my suggestion), use
```
pod 'MQTTClient/MinL'
pod 'MQTTClient/ManagerL'
pod 'MQTTClient/WebsocketL'
```
instead.
### As a dynamic library
Or use the dynamic library created in the MQTTFramework target.
### As source
Or include the source from here.
### With Carthage
[Carthage](https://github.com/Carthage/Carthage)
### Usage
Create a new client and connect to a broker:
```objective-c
#import "MQTTClient.h"
\@interface MyDelegate : ... <MQTTSessionDelegate>
...
MQTTCFSocketTransport *transport = [[MQTTCFSocketTransport alloc] init];
transport.host = @"localhost";
transport.port = 1883;
MQTTSession *session = [[MQTTSession alloc] init];
session.transport = transport;
session.delegate = self;
[session connectAndWaitTimeout:30]; //this is part of the synchronous API
```
Subscribe to a topic:
```objective-c
[session subscribeToTopic:@"example/#" atLevel:2 subscribeHandler:^(NSError *error, NSArray<NSNumber *> *gQoss){
if (error) {
NSLog(@"Subscription failed %@", error.localizedDescription);
} else {
NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss);
}
}]; // this is part of the block API
```
Add the following to receive messages for the subscribed topics
```objective-c
- (void)newMessage:(MQTTSession *)session
data:(NSData *)data
onTopic:(NSString *)topic
qos:(MQTTQosLevel)qos
retained:(BOOL)retained
mid:(unsigned int)mid {
// this is one of the delegate callbacks
}
```
Publish a message to a topic:
```objective-c
[session publishAndWaitData:data
onTopic:@"topic"
retain:NO
qos:MQTTQosLevelAtLeastOnce]; // this is part of the asynchronous API
```
### docs
Documentation generated with doxygen http://doxygen.org in [Documentation](MQTTClient/dist/documentation/html/index.html)
### Comparison MQTT Clients for iOS (incomplete)
|Wrapper|---|----|MQTTKit |Marquette|Moscapsule|Musqueteer|MQTT-Client|MqttSDK|CocoaMQTT|
|-------|---|----|---------|---------|----------|----------|-----------|-------|---------|
| | | |Obj-C |Obj-C |Swift |Obj-C |Obj-C |Obj-C |Swift |
|Library|IBM|Paho|Mosquitto|Mosquitto|Mosquitto |Mosquitto |native |native |native |