MQTT v3.1.1 และ V5.0 ไลบรารีไคลเอนต์สำหรับ iOS/MACOS/TVOS เขียนด้วย Swift 5
สร้างด้วย xcode 11.1 / swift 5.1
เป้าหมาย iOS: 12.0 หรือสูงกว่า OSX เป้าหมาย: 10.13 หรือสูงกว่า TVOS เป้าหมาย: 10.0 หรือสูงกว่า
File not found : /Applications/ Xcode . app / Contents / Developer / Toolchains / XcodeDefault . xctoolchain / usr / lib / arc / libarclite_iphonesimulator . aหากคุณพบปัญหาโปรดอัปเดต Depolyments ขั้นต่ำของโครงการเป็น 11.0
ในการรวม CocoAMQTT เข้ากับโครงการ XCODE ของคุณโดยใช้ cocoapods คุณต้องแก้ไข Podfile ของคุณเช่นดังต่อไปนี้:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT'
endจากนั้นเรียกใช้คำสั่งต่อไปนี้:
$ pod installในที่สุดนำเข้า "cocoamqtt" ไปยังโครงการของคุณ:
import CocoaMQTTติดตั้งโดยใช้ Carthage โดยการเพิ่มบรรทัดต่อไปนี้ลงใน CartFile ของคุณ:
github "emqx/CocoaMQTT" "master"
จากนั้นเรียกใช้คำสั่งต่อไปนี้:
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworksในที่สุด:
ในแท็บแอปพลิเคชันของคุณเป้าหมาย“ การตั้งค่าทั่วไป” ในส่วน "เฟรมเวิร์ก, ห้องสมุดและเนื้อหาฝังตัว", ลากและวาง Cocoamqtt.xcframework, CocoaasyncSocket.xcframework และ Starscream.xcframework จาก Carthage/Build Folder จากนั้นเลือก "EMBED & SIGN"
สร้างไคลเอนต์เพื่อเชื่อมต่อนายหน้า 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 ( ) ตอนนี้คุณสามารถใช้การปิดแทน CocoaMQTTDelegate :
mqtt . didReceiveMessage = { mqtt , message , id in
print ( " Message received in topic ( message . topic ) with payload ( message . string! ) " )
} ไม่จำเป็นต้องมีใบรับรองในพื้นที่ หากคุณต้องการเชื่อถือใบรับรอง CA ที่ไม่น่าเชื่อถือทั้งหมดคุณสามารถทำได้:
mqtt . allowUntrustCACertificate = trueต้องการไฟล์. p12 ที่สร้างขึ้นโดยไฟล์คีย์สาธารณะและไฟล์คีย์ส่วนตัว คุณสามารถสร้างไฟล์ p12 ในเทอร์มินัล:
openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12
หมายเหตุ: โปรดใช้ OpenSSL เวอร์ชัน 1.1 (เช่น brew install [email protected] ) มิฉะนั้นคุณอาจไม่สามารถนำเข้าไฟล์. p12 ที่สร้างขึ้นไปยังระบบได้อย่างถูกต้อง
ใน 1.3.0 CocoAMQTT ได้รองรับการเชื่อมต่อกับนายหน้า MQTT โดย WebSocket
หากคุณรวมโดย cocoapods คุณจะต้องแก้ไข Podfile ของคุณเช่นติดตามและดำเนินการ pod install อีกครั้ง:
use_frameworks!
target 'Example' do
pod 'CocoaMQTT/WebSockets'
end หากคุณใช้ cocoamqtt ในโครงการที่มีเพียง .podspec และไม่มี Podfile เช่นในโมดูลสำหรับ React Native ให้เพิ่มบรรทัดนี้ใน .podspec ของคุณ:
Pod :: Spec . new do | s |
...
s . dependency "Starscream"
endจากนั้นสร้างอินสแตนซ์ MQTT ผ่าน 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 ( )หากคุณต้องการเพิ่มส่วนหัวที่กำหนดเองเพิ่มเติมในการเชื่อมต่อคุณสามารถใช้สิ่งต่อไปนี้:
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 ( ) คุณสามารถติดตามแอพตัวอย่างเพื่อเรียนรู้วิธีใช้ แต่เราต้องทำให้แอปตัวอย่างทำงาน FISRT:
$ cd Examples
$ pod install จากนั้นเปิด Example.xcworkspace/ by xcode แล้วเริ่มต้น!
ฟังก์ชั่นของบุคคลที่สามเหล่านี้ใช้:
GcdasyncSocket
ใบอนุญาต MIT (ดู LICENSE )
https://twitter.com/emqtech