MQTT-Client-Framework
欢迎来到MQTT-Client-Framework
MQTT-Client-Framework是一个本地的Objective-C iOS库。它使用CFNetwork
进行网络通信,使用CoreData
进行持久化。它是MQTT 3.1.1的完整实现,并支持TLS。
您可以通过阅读介绍来了解有关框架的更多信息。
MQTT-Client-Framework已经与众多代理进行了测试
- mosquitto
- paho
- rabbitmq
- hivemq
- rsmb
- mosca
- vernemq
- emqtt
- moquette
- ActiveMQ
- Apollo
- CloudMQTT
- aws
- hbmqtt (仅支持MQTTv311,有限制)
- aedes
- flespi
用法
创建一个新的客户端并连接到代理
#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
}];
订阅一个主题
[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);
}
}];
在您的MQTTSession
代理中,添加以下代码以接收已订阅主题的消息
- (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
}
向主题发布消息
[session publishData:someData onTopic:@"example/#" retain:NO qos:MQTTQosLevelAtMostOnce publishHandler:^(NSError *error) {
}];
如果您已有一个来自代理的自签名URL,如AWS IoT端点,请使用MQTTWebsocketTransport
的url
属性
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
}];
安装
CocoaPods
将以下内容添加到您的Podfile中
pod 'MQTTClient'
简写为
pod 'MQTTClient/Min'
pod 'MQTTClient/Manager'
Manager子规范包括MQTTSessionManager
类。
如果您想通过WebSockets使用MQTT
pod 'MQTTClient/Websocket'
如果您想使用CocoaLumberjack进行日志记录(推荐)
pod 'MQTTClient/MinL'
pod 'MQTTClient/ManagerL'
pod 'MQTTClient/WebsocketL'
Carthage
进入您的Cartfile
github "novastone-media/MQTT-Client-Framework"
手动
使用Git子模块
- 将MQTT-Client-Framework作为git子模块添加到您的顶级项目目录中,或者简单地复制整个文件夹
- 找到MQTTClient.xcodeproj,并将其拖动到应用程序项目的文件导航器中。
- 在Xcode中,通过单击蓝色项目图标,然后选择侧边栏中的“Targets”标题下的“应用程序目标”,导航到目标配置窗口。
- 在“通用”面板下,转到“链接的框架和库”,并添加MQTTClient.framework
框架
- 下载MQTT-Client-Framework
- 编译它,你应该可以在“产品”组下找到MQTTClient.framework。
- 右击它,并选择“在Finder中显示”选项。
- 只需将MQTTClient.framework拖放到您的项目中
安全披露
如果您认为您已识别出MQTT-Client-Framework的安全漏洞,请向[email protected]报告,并不要将其发布到公开的问题跟踪器。
感谢
此项目最初由Christoph Krey编写。