iOS/MacOS/TVOS 용 MQTT v3.1.1 및 v5.0 클라이언트 라이브러리 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 CocoaMQTTCartfile에 다음 줄을 추가하여 Carthage를 사용하여 설치하십시오.
github "emqx/CocoaMQTT" "master"
그런 다음 다음 명령을 실행합니다.
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworks마침내 :
애플리케이션에서 "일반"설정 탭, "프레임 워크, 라이브러리 및 임베디드 콘텐츠"섹션에서 CocoAmqtt.xcframework, CocoaaSyncSocket.xcframework 및 Disk의 CoCoaAsyncSocket.xcframework를 드래그 앤 드롭 및 드롭 삭제합니다. 그런 다음 "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! ) " )
} 로컬로 인증서가 필요하지 않습니다. 모든 Untrust 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는 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 ( ) 예제 앱을 따라 사용 방법을 배울 수 있습니다. 그러나 우리는 예제 앱을 작동시켜야합니다.
$ cd Examples
$ pod install 그런 다음 Example.xcworkspace/ by xcode를 열고 시작하십시오!
이 타사 기능은 다음과 같습니다.
gcdasyncsocket
MIT 라이센스 ( LICENSE 참조)
https://twitter.com/emqtech