gpt4 book ai didi

ios - MQTT 通过多个 ViewController 发送消息

转载 作者:行者123 更新时间:2023-11-30 11:06:17 25 4
gpt4 key购买 nike

我的 mqtt 配置有问题。连接工作正常。每次我发送消息时,切换到另一个 ViewController,返回并再次按下发送按钮,我的树莓派上没有收到消息。所以问题是,当我切换多个 ViewController 时,我无法再发送消息了。我在代码中没有发现错误:

MQTT 配置的 Swift 文件:

class ConnectionFunctions{
struct staticMQTT {
static var mqttClient: CocoaMQTT!
}
func configureMQTT() {
let clientID = "Tablet"
let host = "192.168.2.106"
let port = UInt16(1883)
staticMQTT.mqttClient = CocoaMQTT(clientID: clientID, host: host, port: port)
staticMQTT.mqttClient.username = ""
staticMQTT.mqttClient.password = ""
staticMQTT.mqttClient.keepAlive = 60
staticMQTT.mqttClient.delegate = self
}
func sendMessage(topic:String, message:String){
staticMQTT.mqttClient.publish(topic, withString: message)
}

第一个 View Controller :

class MainViewController: UIViewController {

//MQTT Setup
var mqttfuncs=ConnectionFunctions()

override func viewDidLoad() {
super.viewDidLoad()
mqttfuncs.configureMQTT()
}
@IBAction func ConnectingButton(_ sender: UIButton) {
ConnectionFunctions.staticMQTT.mqttClient.connect()
}
@IBAction func Test(_ sender: UIButton) {
mqttfuncs.sendMessage(topic: "Test", message: "main")
mqttfuncs.receiveMessage(topic: "Test2")
}

第二个 View Controller

class ComponentDataController: UIViewController {
let mqttfuncs = ConnectionFunctions()
@IBAction func TestSending(_ sender: UIButton) {
mqttfuncs.sendMessage(topic: "Test", message: "component")
}

使用第一个 View Controller 发送工作正常,在使用第二个 View Controller 发送之后也工作正常,但是当我切换回我的第一个 View Controller 并按下发送按钮时没有任何反应。

希望你能帮助我!此致克里斯

最佳答案

您似乎尝试将 MQTT 客户端类设置为单例,但代码看起来有点不对

使用

class MQTTManager {
static let shared = MQTTManager()

private var mqttClient: CocoaMQTT

private init() {
let clientID = "Tablet"
let host = "192.168.2.106"
let port = UInt16(1883)
self.mqttClient = CocoaMQTT(clientID: clientID, host: host, port: port)
self.mqttClient.username = ""
self.mqttClient.password = ""
self.mqttClient.keepAlive = 60
self.mqttClient.delegate = self
self.mqttClient.connect()
}

func sendMessage(topic:String, message:String){
self.mqttClient.publish(topic, withString: message)
}

//... other functions which you haven't shown
}

然后要发送消息,您只需说

MQTTManager.shared.sendMessage(topic:"topic", message:"message")

关于ios - MQTT 通过多个 ViewController 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52681710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com