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)
Howto
Use the CocoaPod MQTTClient!
Add this to your Podfile:
pod 'MQTTClient'
Additionally add this subspec if you want to use MQTT over Websockets:
pod 'MQTTClient/Websocket'
Or use the dynamic library created in the MQTTFramework target.
Or include the source from here.
Usage
Create a new client and connect to a broker:
\@interface MyDelegate : ... MQTTSessionDelegate>
...
MQTTCFSocketTransport *transport = [[MQTTCFSocketTransport alloc] init];
transport.host = @"localhost";
transport.port = 1883;
session = [[MQTTSession alloc] init];
session.transport = transport;
session.delegate=self;
[session connectAndWaitTimeout:30]; //this is part of the synchronous API
Subscribe to a topic:
[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
- (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:
[session publishAndWaitData:data
onTopic:@"topic"
retain:NO
qos:MQTTQosLevelAtLeastOnce]; // this is part of the asynchronous API
docs
Documentation generated with doxygen http://doxygen.org
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 |