MQTT V3.1.1 et V5.0 Bibliothèque client pour iOS / macOS / TVOS écrit avec Swift 5
Construire avec Xcode 11.1 / Swift 5.1
Target iOS: 12.0 ou supérieur à la cible OSX: 10.13 ou plus TVOS Target: 10.0 ou supérieur
File not found : /Applications/ Xcode . app / Contents / Developer / Toolchains / XcodeDefault . xctoolchain / usr / lib / arc / libarclite_iphonesimulator . aSi vous rencontrez le problème, veuillez mettre à jour les dépolyments minimums de votre projet à 11.0
Pour intégrer CoCoAmQTT dans votre projet XCode à l'aide de CocoAPoD, vous devez vous Podfile comme les suivants:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT'
endEnsuite, exécutez la commande suivante:
$ pod installEnfin, importez "cocoamqtt" à votre projet:
import CocoaMQTTInstallez à l'aide de Carthage en ajoutant les lignes suivantes à votre cartot:
github "emqx/CocoaMQTT" "master"
Ensuite, exécutez la commande suivante:
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworksEnfin:
Sur votre application cible l'onglet Paramètres «Général», dans la section "Frameworks, bibliothèques et contenu intégré", glisser et déposer cocoamqtt.xcframework, cocoaasyncsocket.xcframework et starscream.xcframework à partir du dossier carthage / build sur le disque. Sélectionnez ensuite "Embed & Sign".
Créer un client pour connecter le courtier MQTT:
///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 ( ) Vous pouvez maintenant utiliser des fermetures au lieu de CocoaMQTTDelegate :
mqtt . didReceiveMessage = { mqtt , message , id in
print ( " Message received in topic ( message . topic ) with payload ( message . string! ) " )
} Aucun certificat n'est requis localement. Si vous souhaitez faire confiance à tous les certificats de CA de détresse, vous pouvez le faire:
mqtt . allowUntrustCACertificate = trueBesoin d'un fichier .p12 généré par un fichier de clé publique et un fichier de clé privée. Vous pouvez générer le fichier p12 dans le terminal:
openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12
Remarque: veuillez utiliser OpenSSL Version 1.1 (par exemple, brew install [email protected] ), sinon vous ne pourrez peut-être pas importer correctement le fichier .p12 généré dans le système.
Dans le 1.3.0, le cocoamqtt a pris en charge pour se connecter au courtier MQTT par WebSocket.
Si vous avez intégré par Cocoapods , vous devez vous modifier Podfile comme les suivants et exécuter à nouveau pod install :
use_frameworks!
target 'Example' do
pod 'CocoaMQTT/WebSockets'
end Si vous utilisez CoCoAmQTT dans un projet avec seulement un .podspec et pas Podfile , par exemple dans un module pour React natif, ajoutez cette ligne à votre .podspec :
Pod :: Spec . new do | s |
...
s . dependency "Starscream"
endEnsuite, créez une instance MQTT sur 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 ( )Si vous souhaitez ajouter un en-tête personnalisé supplémentaire à la connexion, vous pouvez utiliser ce qui suit:
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 ( ) Vous pouvez suivre l'application d'exemple pour apprendre à l'utiliser. Mais nous devons faire en sorte que l'exemple de l'application fonctionne fisrt:
$ cd Examples
$ pod install Ensuite, ouvrez l' Example.xcworkspace/ par xcode et démarrez-le!
Ces fonctions tierces sont utilisées:
Gcdasyncsocket
Licence MIT (voir LICENSE )
https://twitter.com/emqtech