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如果您遇到問題,請將您的項目最小間距更新為11.0
要使用Cocoapods將CocoAmqtt集成到您的Xcode項目中,您需要像以下內容一樣修改Podfile :
use_frameworks!
target 'Example' do
pod 'CocoaMQTT'
end然後,運行以下命令:
$ pod install最後,向您的項目導入“ CocoAmqtt”:
import CocoaMQTT通過將以下幾行添加到您的Cartfile:使用迦太基安裝:
github "emqx/CocoaMQTT" "master"
然後,運行以下命令:
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworks終於:
在您的應用程序上,在“框架,庫和嵌入式內容”部分中的“常規”設置選項卡上,拖放Cocoamqtt.xcframework,cocoaasyncsocket.xcframework.xcframework和starstCreamwork.xcframe.xcframework從carthage/build build build insk On Disk上的構建文件機。然後選擇“嵌入和簽名”。
創建一個客戶以連接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
注意:請使用OPENSL版本1.1(例如brew install [email protected] ),否則您可能無法正確地將生成的.p12文件導入到系統。
在1.3.0中,CocoAMQTT支持Websocket連接到MQTT代理。
如果您通過Cocoapods集成,則需要像以下內容一樣修改Podfile ,然後再次執行pod install :
use_frameworks!
target 'Example' do
pod 'CocoaMQTT/WebSockets'
end如果您在一個項目中僅使用.podspec且沒有Podfile CocoAmqtt,例如,在模塊中,用於React Native,請將此行添加到您的.podspec :
Pod :: Spec . new do | s |
...
s . dependency "Starscream"
end然後,通過WebSocket創建一個MQTT實例:
///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/ xcode並開始它!
使用這些第三方功能:
gcdasyncsocket
麻省理工學院許可證(請參閱LICENSE )
https://twitter.com/emqtech