MQTT V3.1.1およびV5.0 Swift5で書かれたiOS/MACOS/TVOのクライアントライブラリ
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に更新してください
cocoAmqttをcocoapodsを使用してXcodeプロジェクトに統合するには、次のようにPodfile変更する必要があります。
use_frameworks!
target 'Example' do
pod 'CocoaMQTT'
end次に、次のコマンドを実行します。
$ pod install最後に、プロジェクトに「cocoamqtt」をインポートします。
import CocoaMQTTカートファイルに次の行を追加して、Carthageを使用してインストールしてください。
github "emqx/CocoaMQTT" "master"
次に、次のコマンドを実行します。
$ carthage update --platform iOS,macOS,tvOS --use-xcframeworksやっと:
アプリケーションの「一般」の[一般的な設定]タブ、「フレームワーク、ライブラリ、および組み込みコンテンツ」セクション、ドラッグアンドドロップcocoamqtt.xcframework、cocoaasyncsocket.xcframework、starscream.xcframeworkは、disk上のCarthage/buildフォルダーから。次に、「埋め込み&サイン」を選択します。
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! ) " )
} 地元で証明書は必要ありません。すべてのUnstrust 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ネイティブのモジュールでは、 .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次に、xcodeでExample.xcworkspace/を開き、起動します!
これらのサードパーティ関数が使用されます。
gcdasyncsocket
MITライセンス( LICENSEを参照)
https://twitter.com/emqtech