MQTTClientMinCopy 0.15.1

MQTTClientMinCopy 0.15.1

iOnRoad 维护。



  • 作者
  • novastonemedia

这是 0.15.1 版本副本,修改了 MQTTSession 的一些代码,在关闭代理之前解析消息。可能很快就会被删除!

MQTT-Client-Framework

Build Status codecov CocoaPods Version Platform

欢迎使用 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 端点,使用 MQTTWebsocketTransporturl 属性

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 子模块

  1. 将 MQTT-Client-Framework 作为 Git 子模块添加到您的顶级项目目录中,或者简单地复制整个文件夹。
  2. 找到 MQTTClient.xcodeproj 并将其拖放到您的应用项目的文件导航器中。
  3. 在 Xcode 中,通过单击蓝色项目图标并选择侧边栏中的“Targets”标题下的“应用目标”,导航到目标配置窗口。
  4. 在“通用”面板下,转到“链接框架和库”,并添加 MQTTClient.framework。

框架

  1. 下载 MQTT-Client-Framework
  2. 编译它,您应该在“产品”组下找到 MQTTClient.framework。
  3. 右键单击它,并选择“在 Finder 中显示”选项。
  4. 只需将 MQTTClient.framework 拖放到您的项目中即可。

安全披露

如果您认为您已在 MQTT-Client-Framework 中发现了一个安全漏洞,请向 [email protected] 报告,不要在公共问题跟踪器中发布。

谢谢

该项目最初由 Christoph Krey 编写。