مكتبة عميل 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إذا واجهت المشكلة ، يرجى تحديث الحد الأدنى
لدمج Cocoamqtt في مشروع Xcode الخاص بك باستخدام Cocoapods ، تحتاج إلى 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 و Starscream.xcframework من carthage/build 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
ملاحظة: يرجى استخدام OpenSSL الإصدار 1.1 (على سبيل المثال brew install [email protected] ) ، وإلا فقد لا تتمكن من استيراد ملف .p12 الذي تم إنشاؤه إلى النظام بشكل صحيح.
في 1.3.0 ، دعم Cocoamqtt للاتصال بـ MQTT Broker بواسطة 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/ بواسطة Xcode وابدأه!
يتم استخدام وظائف الجهات الخارجية هذه:
GCDASYNCSOCKE
ترخيص معهد ماساتشوستس للتكنولوجيا (انظر LICENSE )
https://twitter.com/emqtech