Skip to content

suyongmaozhao/MQTT-Client-Framework

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MQTT-Client-Framework

Carthage compatible

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.

Documentation

Usage

Create a new client and connect to a broker:

#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:

[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

About

iOS, OSX, tvOS native ObjectiveC MQTT Client Framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Objective-C 98.1%
  • Swift 1.6%
  • Ruby 0.3%