MQTT V3.1.1 dan V5.0 Perpustakaan Klien untuk iOS/MacOS/TVOS Ditulis dengan Swift 5
Bangun dengan Xcode 11.1 / Swift 5.1
Target iOS: 12.0 atau di atas target OSX: 10.13 atau di atas target TVOS: 10.0 atau lebih tinggi
File not found : /Applications/ Xcode . app / Contents / Developer / Toolchains / XcodeDefault . xctoolchain / usr / lib / arc / libarclite_iphonesimulator . aJika Anda menghadapi masalah ini, harap perbarui depolismen minimum proyek Anda ke 11.0
Untuk mengintegrasikan cocoamqtt ke dalam proyek XCode Anda menggunakan cocoapods, Anda perlu memodifikasi Podfile Anda seperti pengikut:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT'
endKemudian, jalankan perintah berikut:
$ pod installAkhirnya, impor "cocoamqtt" ke proyek Anda:
import CocoaMQTTInstal menggunakan carthage dengan menambahkan baris berikut ke cartfile Anda:
github "emqx/CocoaMQTT" "master"
Kemudian, jalankan perintah berikut:
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworksAkhirnya:
Pada aplikasi Anda menargetkan tab Pengaturan "Umum", di bagian "Kerangka, Perpustakaan, dan Konten Tertanam", seret dan jatuhkan cocoamqtt.xcframework, cocoaAsyncsocket.xcframework dan starscream.xcframework dari carthage/build folder pada disk. Kemudian pilih "Embed & Sign".
Buat klien untuk menghubungkan broker 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 ( ) Sekarang Anda dapat menggunakan penutupan alih -alih CocoaMQTTDelegate :
mqtt . didReceiveMessage = { mqtt , message , id in
print ( " Message received in topic ( message . topic ) with payload ( message . string! ) " )
} Tidak diperlukan sertifikat secara lokal. Jika Anda ingin mempercayai semua sertifikat CA yang tidak dapat dipercaya, Anda dapat melakukan ini:
mqtt . allowUntrustCACertificate = trueButuh file .p12 yang dihasilkan oleh file kunci publik dan file kunci pribadi. Anda dapat menghasilkan file P12 di terminal:
openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12
CATATAN: Silakan gunakan OpenSSL Versi 1.1 (EG brew install [email protected] ), jika tidak, Anda mungkin tidak dapat mengimpor file .p12 yang dihasilkan ke sistem dengan benar.
Di 1.3.0, CocoamQTT telah didukung untuk terhubung ke MQTT Broker oleh Websocket.
Jika Anda diintegrasikan dengan cocoapods , Anda perlu memodifikasi Anda Podfile seperti pengikut dan menjalankan pod install lagi:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT/WebSockets'
end Jika Anda menggunakan cocoamqtt dalam suatu proyek dengan hanya .podspec dan tanpa Podfile , misalnya dalam modul untuk React Native, tambahkan baris ini ke .podspec Anda:
Pod :: Spec . new do | s |
...
s . dependency "Starscream"
endKemudian, buat instance MQTT melalui 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 ( )Jika Anda ingin menambahkan header khusus tambahan ke koneksi, Anda dapat menggunakan yang berikut:
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 ( ) Anda dapat mengikuti aplikasi contoh untuk mempelajari cara menggunakannya. Tapi kita perlu membuat contoh aplikasi berfungsi fisrt:
$ cd Examples
$ pod install Kemudian, buka Example.xcworkspace/ oleh Xcode dan mulai!
Fungsi pihak ketiga ini digunakan:
Gcdasyncsocket
Lisensi MIT (lihat LICENSE )
https://twitter.com/emqtech