MQTT V3.1.1 und V5.0 Client -Bibliothek für iOS/macOS/tvOS mit Swift 5 geschrieben
Erstellen Sie mit Xcode 11.1 / Swift 5.1
IOS -Ziel: 12.0 oder über OSX -Ziel: 10.13 oder über TVOS -Ziel: 10.0 oder höher
File not found : /Applications/ Xcode . app / Contents / Developer / Toolchains / XcodeDefault . xctoolchain / usr / lib / arc / libarclite_iphonesimulator . aWenn Sie auf das Problem stoßen, aktualisieren Sie bitte Ihre Projektmindestableitungen auf 11.0
Um Cocoamqtt mit Cocoapods in Ihr XCode -Projekt zu integrieren, müssen Sie Sie wie die folgenden Podfile ändern:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT'
endFühren Sie dann den folgenden Befehl aus:
$ pod installImportieren Sie endlich "Cocoamqtt" in Ihr Projekt:
import CocoaMQTTInstallieren Sie mit Karthago, indem Sie Ihrem Cartfile die folgenden Zeilen hinzufügen:
github "emqx/CocoaMQTT" "master"
Führen Sie dann den folgenden Befehl aus:
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworksEndlich:
Auf Ihren Anwendungszielen "Allgemeine" Einstellungen der Registerkarte "Frameworks, Bibliotheken und eingebettete Inhalte", Drag & Drop Cocoamqtt.xcFramework, CocoaaSyncsocket.xcframework und starscream.xcframework vom Karthage/Build -Ordner auf der Datei. Wählen Sie dann "Einbett & Zeichen".
Erstellen Sie einen Client, um den MQTT -Broker zu verbinden:
///MQTT 5.0
let clientID = " CocoaMQTT- " + String ( ProcessInfo ( ) . processIdentifier )
let mqtt5 = CocoaMQTT5 ( clientID : clientID , host : " broker.emqx.io " , port : 1883 )
let connectProperties = MqttConnectProperties ( )
connectProperties . topicAliasMaximum = 0
connectProperties . sessionExpiryInterval = 0
connectProperties . receiveMaximum = 100
connectProperties . maximumPacketSize = 500
mqtt5 . connectProperties = connectProperties
mqtt5 . username = " test "
mqtt5 . password = " public "
mqtt5 . willMessage = CocoaMQTTMessage ( topic : " /will " , string : " dieout " )
mqtt5 . keepAlive = 60
mqtt5 . delegate = self
mqtt5 . connect ( )
///MQTT 3.1.1
let clientID = " CocoaMQTT- " + String ( ProcessInfo ( ) . processIdentifier )
let mqtt = CocoaMQTT ( clientID : clientID , host : " broker.emqx.io " , port : 1883 )
mqtt . username = " test "
mqtt . password = " public "
mqtt . willMessage = CocoaMQTTMessage ( topic : " /will " , string : " dieout " )
mqtt . keepAlive = 60
mqtt . delegate = self
mqtt . connect ( ) Jetzt können Sie Schließungen anstelle von CocoaMQTTDelegate verwenden:
mqtt . didReceiveMessage = { mqtt , message , id in
print ( " Message received in topic ( message . topic ) with payload ( message . string! ) " )
} Vor Ort ist kein Zertifikat erforderlich. Wenn Sie allen nicht vertrauenswürdigen CA -Zertifikaten vertrauen möchten, können Sie dies tun:
mqtt . allowUntrustCACertificate = trueBenötigen Sie eine .p12 -Datei, die von einer öffentlichen Schlüsseldatei und einer privaten Tastendatei generiert wird. Sie können die P12 -Datei im Terminal erstellen:
openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12
HINWEIS: Bitte verwenden Sie OpenSSL Version 1.1 (z. B. brew install [email protected] ). Andernfalls können Sie die generierte .P12 -Datei möglicherweise nicht korrekt in das System importieren.
Im 1.3.0 hat der Cocoamqtt die Verbindung zum MQTT -Broker per WebSocket unterstützt.
Wenn Sie von Cocoapods integriert sind, müssen Sie Sie Podfile wie die folgenden Angaben ändern und pod install erneut ausführen:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT/WebSockets'
end Wenn Sie Cocoamqtt in einem Projekt mit nur einem .podspec und ohne Podfile verwenden, z .podspec
Pod :: Spec . new do | s |
...
s . dependency "Starscream"
endErstellen Sie dann eine MQTT -Instanz über WebSocket:
///MQTT 5.0
let websocket = CocoaMQTTWebSocket ( uri : " /mqtt " )
let mqtt5 = CocoaMQTT5 ( clientID : clientID , host : host , port : 8083 , socket : websocket )
let connectProperties = MqttConnectProperties ( )
connectProperties . topicAliasMaximum = 0
// ...
mqtt5 . connectProperties = connectProperties
// ...
_ = mqtt5 . connect ( )
///MQTT 3.1.1
let websocket = CocoaMQTTWebSocket ( uri : " /mqtt " )
let mqtt = CocoaMQTT ( clientID : clientID , host : host , port : 8083 , socket : websocket )
// ...
_ = mqtt . connect ( )Wenn Sie der Verbindung zusätzlichen benutzerdefinierten Header hinzufügen möchten, können Sie Folgendes verwenden:
let websocket = CocoaMQTTWebSocket ( uri : " /mqtt " )
websocket . headers = [
" x-api-key " : " value "
]
websocket . enableSSL = true
let mqtt = CocoaMQTT ( clientID : clientID , host : host , port : 8083 , socket : websocket )
// ...
_ = mqtt . connect ( ) Sie können der Beispiel -App folgen, um zu erfahren, wie Sie sie verwenden. Wir müssen jedoch die Beispiel -App erstellen, die fisrt funktioniert:
$ cd Examples
$ pod install Öffnen Sie dann das Example.xcworkspace/ by Xcode und starten Sie es!
Diese Funktionen von Drittanbietern werden verwendet:
Gcdasyncsocket
MIT -Lizenz (siehe LICENSE )
https://twitter.com/emqtech