MQTT v3.1.1 e v5.0 Biblioteca de clientes para iOS/macOS/tvOS escritos com Swift 5
Construa com Xcode 11.1 / Swift 5.1
Alvo do iOS: 12.0 ou superior OSX Alvo: 10.13 ou acima do TVOS Target: 10.0 ou acima
File not found : /Applications/ Xcode . app / Contents / Developer / Toolchains / XcodeDefault . xctoolchain / usr / lib / arc / libarclite_iphonesimulator . aSe você encontrar o problema, atualize o seu projeto mínimo depoliações para 11.0
Para integrar o Cocoamqtt ao seu projeto Xcode usando o Cocoapods, você precisa modificar o Podfile como os seguintes:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT'
endEm seguida, execute o seguinte comando:
$ pod installPor fim, importe "Cocoamqtt" para o seu projeto:
import CocoaMQTTInstale usando o Cartago adicionando as seguintes linhas ao seu arquivo Cart:
github "emqx/CocoaMQTT" "master"
Em seguida, execute o seguinte comando:
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworksAfinal:
Na guia Configurações "gerais" de metas de aplicativo, na seção "estruturas, bibliotecas e conteúdo incorporado", arraste e solte o cocoamqtt.xcframework, cocoaasyncsocket.xcframework e starscream.xcframework da pasta Carthage/Build no disco. Em seguida, selecione "Incorporar e assinar".
Crie um cliente para conectar o 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 ( ) Agora você pode usar o fechamento em vez de CocoaMQTTDelegate :
mqtt . didReceiveMessage = { mqtt , message , id in
print ( " Message received in topic ( message . topic ) with payload ( message . string! ) " )
} Nenhum certificado é necessário localmente. Se você quiser confiar em todos os certificados não confiáveis, pode fazer isso:
mqtt . allowUntrustCACertificate = truePrecisa de um arquivo .p12 que é gerado por um arquivo de chave pública e um arquivo de chave privado. Você pode gerar o arquivo p12 no terminal:
openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12
NOTA: Use o OpenSSL versão 1.1 (por exemplo, brew install [email protected] ); caso contrário, você não poderá importar o arquivo .p12 gerado corretamente para o sistema.
No 1.3.0, o Cocoamqtt apoiou para conectar -se ao corretor MQTT pela WebSocket.
Se você se integrou por Cocoapods , precisa modificar o Podfile como os seguintes e executar pod install novamente:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT/WebSockets'
end Se você estiver usando o Cocoamqtt em um projeto com apenas um .podspec e sem Podfile , por exemplo, em um módulo para o React Native, adicione esta linha ao seu .podspec :
Pod :: Spec . new do | s |
...
s . dependency "Starscream"
endEm seguida, crie uma instância do MQTT sobre o 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 ( )Se você deseja adicionar um cabeçalho personalizado adicional à conexão, pode usar o seguinte:
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 ( ) Você pode seguir o aplicativo de exemplo para aprender a usá -lo. Mas precisamos fazer o exemplo do aplicativo funciona fisrt:
$ cd Examples
$ pod install Em seguida, abra o Example.xcworkspace/ por xcode e inicie -o!
Essas funções de terceiros são usadas:
Gcdasyncsocket
Licença do MIT (consulte LICENSE )
https://twitter.com/emqtech