novastone-media/MQTT-Client-Framework(新しいタブで開きます)
主要言語: Objective-C
iOS, macOS, tvOS native ObjectiveC MQTT Client Framework
- star 数
- 1,880
- watcher 数
- 75
- fork 数
- 469
- issue 数
- 92
- 最終更新
- 2023/09/12
主要言語: Objective-C
iOS, macOS, tvOS native ObjectiveC MQTT Client Framework
MQTT-Client-Framework is a native Objective-C iOS library. It uses CFNetwork for networking and CoreData for persistence. It is a complete implementation of MQTT 3.1.1 and supports TLS.
You can read introduction to learn more about framework.
MQTT-Client-Framework is tested with a long list of brokers:
For example app, see MQTTChat
Create a new client and connect to a broker:
#import "MQTTClient.h" MQTTCFSocketTransport *transport = [[MQTTCFSocketTransport alloc] init]; transport.host = @"test.mosquitto.org"; transport.port = 1883; MQTTSession *session = [[MQTTSession alloc] init]; session.transport = transport; [session connectWithConnectHandler:^(NSError *error) { // Do some work }];
Subscribe to a topic:
[session subscribeToTopic:@"example/#" atLevel:MQTTQosLevelExactlyOnce subscribeHandler:^(NSError *error, NSArray<NSNumber *> *gQoss) { if (error) { NSLog(@"Subscription failed %@", error.localizedDescription); } else { NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss); } }];
In your MQTTSession delegate, 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 { // New message received in topic }
Publish a message to a topic:
[session publishData:someData onTopic:@"example/#" retain:NO qos:MQTTQosLevelAtMostOnce publishHandler:^(NSError *error) { }];
If you already have a self signed URL from broker like AWS IoT endpoint, use the url property of MQTTWebsocketTransport:
MQTTWebsocketTransport *transport = [[MQTTWebsocketTransport alloc] init]; transport.url = @"wss://aws.iot-amazonaws.com/mqtt?expiry='2018-05-01T23:12:32.950Z'" MQTTSession *session = [[MQTTSession alloc] init]; session.transport = transport; [session connectWithConnectHandler:^(NSError *error) { // Do some work }];
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.
If you want to use MQTT over Websockets:
pod 'MQTTClient/Websocket'
If you want to do your logging with CocoaLumberjack (recommended):
pod 'MQTTClient/MinL'
pod 'MQTTClient/ManagerL'
pod 'MQTTClient/WebsocketL'
In your Cartfile:
github "novastone-media/MQTT-Client-Framework"
If you believe you have identified a security vulnerability with MQTT-Client-Framework, please report it to ios@novastonemedia.com and do not post it to a public issue tracker.
This project was originally written by Christoph Krey.