上个月我试图在我的应用程序中第一次使用Mqtt.作为一个初学者,我很难找到如何以及在何处放置我在各种来源中找到的样本代码.
在我的问题上花了一个星期后,我设法让mqtt在我的项目中工作,所以在这里我将分享我逐步学到的步骤.这不是一个真正的问题(xD!)
首先,让我们给Moscapsule的开发人员.您可以在他们的github页面上找到更多信息和详细信息.
好的,让我们开始这个节目吧.
如何在iOS(Swift)上使用Moscapsule实现mqtt客户端?
1)使用pod安装Moscapsule(再次查看).
2)在你的viewcontroller文件中(或者你使用的任何名称xxxx.swift):
一个) import Moscapusle
b)在viewDidLoad()方法之前,配置并创建mqtt客户端(使其成为全局变量).
//set MQTT client configuration
let mqttConfig = MQTTConfig(clientId: "iOS_test_mqtt", host: "yourserver.adress.com", port: 1883, keepAlive: 60)
// create new MQTT Connection
var mqttClient: MQTTClient? = nil
Run Code Online (Sandbox Code Playgroud)
3)在viewDidLoad()或您需要的另一个方法中,请实现onPublish方法和onMessageCallback方法.
mqttConfig.onPublishCallback = { messageId in
print("published (msg id=\(messageId)))")
}
mqttConfig.onMessageCallback = { mqttMessage in
print("MQTT Message received: payload=\(mqttMessage.payloadString)")
let receivedMessage = mqttMessage.payloadString!
print("from server msg = \(receivedMessage)")
let data = receivedMessage.data(using: .utf8, allowLossyConversion: false)!
print("xxxxxxx = \(data)")
}
Run Code Online (Sandbox Code Playgroud)
4)获取,读取和操作mqttConfig.onMessageCallback = {}内收到的消息.这是一个关于如何通过mqtt请求读取从mqtt服务器收到的qrCode密钥(在json内)的示例
mqttConfig.onMessageCallback = { mqttMessage in
print("MQTT Message received: payload=\(mqttMessage.payloadString)")
let receivedMessage = mqttMessage.payloadString!
print("from server msg = \(receivedMessage)")
let data = receivedMessage.data(using: .utf8, allowLossyConversion: false)!
print("xxxxxxx = \(data)")
do{
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [String : AnyObject]
/*
* catch and analyse the contents of the received messages from the differents request
*/
// message received from the qrCode creation request
if let randomKey = json["jsonanswer"]?.value(forKey: "randomkey"){
print("the random key is = \(randomKey)")
}
Run Code Online (Sandbox Code Playgroud)
5)不要忘记建立您创建的客户端的mqtt连接.使用此代码示例
mqttClient = MQTT.newConnection(mqttConfig, connectImmediately: true)
Run Code Online (Sandbox Code Playgroud)
6)您还需要订阅您想要收听的主题.使用此代码示例
mqttClient?.subscribe("opencampus/getqr/\(myUserUniqueID)", qos: 0)
Run Code Online (Sandbox Code Playgroud)
7)如果要在执行操作时向主题发布某些内容(消息)(例如:用户单击按钮),请将以下代码放入btnPressd函数中.请参阅此代码示例
@IBAction func btnGenerateQRCodePressed(_ sender: UIButton) {
// publish the user unique ID when user click the button
print("###### unique id = \(myUserUniqueID)")
mqttClient?.publish(string: "{\"uniqueid\": \"\(myUserUniqueID)\"}", topic: "opencampus/generateqr", qos: 0, retain: false)
}
Run Code Online (Sandbox Code Playgroud)
8)最后要做的事情是在完成使用它时断开你的mqtt客户端.
self.mqttClient?.disconnect()
Run Code Online (Sandbox Code Playgroud)
瞧!!!! 如果您的mqtt服务器配置良好并且连接良好,那么一切都应该可以正常工作.
我并不擅长解释事情,但是当你尝试时,如果出现问题,请告诉我!分享是关键,所以让我们共同努力!!!!
| 归档时间: |
|
| 查看次数: |
2466 次 |
| 最近记录: |