这是 0.15.1 版本副本,修改了 MQTTSession 的一些代码,在关闭代理之前解析消息。可能很快就会被删除!
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 subspec 包含 MQTTSessionManager
类。
如果您想通过 Websocket 使用 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 编写。