MQTT v3.1.1 y v5.0 Biblioteca de clientes para iOS/macOS/tvos escrito con Swift 5
Construir con xcode 11.1 / swift 5.1
IOS Target: 12.0 o superior OSX Objetivo: 10.13 o por encima de TVOS Target: 10.0 o superior
File not found : /Applications/ Xcode . app / Contents / Developer / Toolchains / XcodeDefault . xctoolchain / usr / lib / arc / libarclite_iphonesimulator . aSi se encuentra con el problema, actualice los despolerios mínimos de su proyecto a 11.0
Para integrar CocoamQTT en su proyecto Xcode usando Cocoapods, debe modificarlo con Podfile como los siguientes:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT'
endLuego, ejecute el siguiente comando:
$ pod installPor fin, importe "Cocoamqtt" a su proyecto:
import CocoaMQTTInstale usando Cartago agregando las siguientes líneas a su Cartfile:
github "emqx/CocoaMQTT" "master"
Luego, ejecute el siguiente comando:
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworksPor fin:
En su aplicación, se dirige a la pestaña Configuración "General", en la sección "Marcos, bibliotecas y contenido integrado", arrastre y suelte Cocoamqtt.xcframework, cocoaasyncsocket.xcframework y starscream.xcframework desde la carpeta Carthage/Build en Disk. Luego seleccione "Insertar y firmar".
Cree un cliente para conectar MQTT Broker:
///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 ( ) Ahora puede usar cierres en lugar de CocoaMQTTDelegate :
mqtt . didReceiveMessage = { mqtt , message , id in
print ( " Message received in topic ( message . topic ) with payload ( message . string! ) " )
} No se requiere certificado localmente. Si desea confiar en todos los certificados de CA no
mqtt . allowUntrustCACertificate = trueNecesita un archivo .p12 que sea generado por un archivo de clave pública y un archivo de clave privada. Puede generar el archivo p12 en el terminal:
openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12
Nota: Utilice OpenSSL Versión 1.1 (por ejemplo brew install [email protected] ), de lo contrario, es posible que no pueda importar el archivo .p12 generado al sistema correctamente.
En el 1.3.0, el CocoamQTT ha admitido conectarse a MQTT Broker por WebSocket.
Si está integrado por Cocoapods , debe modificar su Podfile como los siguientes y ejecutar pod install nuevamente:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT/WebSockets'
end Si está utilizando Cocoamqtt en un proyecto con solo un .podspec y sin Podfile , por ejemplo, en un módulo para React Native, agregue esta línea a su .podspec :
Pod :: Spec . new do | s |
...
s . dependency "Starscream"
endLuego, cree una instancia MQTT a través de 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 desea agregar un encabezado personalizado adicional a la conexión, puede usar lo siguiente:
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 ( ) Puede seguir la aplicación Ejemplo para aprender a usarla. Pero necesitamos hacer que la aplicación de ejemplo funciona fisrt:
$ cd Examples
$ pod install Luego, abra el Example.xcworkspace/ por xcode y comience!
Se utilizan estas funciones de terceros:
Gcdasyncsocket
Licencia MIT (ver LICENSE )
https://twitter.com/emqtech