解锁 iPhone 屏幕后如何重新连接到 Openfire 服务器?

How to reconnect to Openfire server after unlocking the iPhone screen?

我正在使用 XMPPFramework。当我锁定 iPhone 屏幕时,我的 XMPP 连接总是关闭。 当我解锁屏幕时,我需要重新连接到我的 Openfire 服务器。

这是我如何使用 XMPPReconnect(在 Swift 中):

func xmppStreamDidAuthenticate(sender: XMPPStream) {
    let xmppReconnect = XMPPReconnect()
    xmppReconnect.activate(sender)
    xmppReconnect.addDelegate(self, delegateQueue: dispatch_get_main_queue())
}

但是,我解锁屏幕后似乎永远不会重新连接。 我使用 XMPPReconnect 正确吗?

如何实现我的目标?

您必须在 applicationDidBecomeActive 的 appdelegate 中编写代码。因为当你解锁屏幕时会调用这个方法,在这个方法中你必须调用connect方法才能打开fire....

func applicationDidBecomeActive(application: UIApplication) {
       self.connect()
    }

 func connect() -> Bool {
        println("connecting")
        setupStream()


        var jabberID: String? = "YOUR_JID" 
        var myPassword: String? = "YOUR_PASSWORD" 
        var server: String? = "YOUR_HOST" 




        xmppStream!.hostName = "YOURHOST_NAME"
        xmppStream!.hostPort = 5222

        if let stream = xmppStream {
            if !stream.isDisconnected() {
                return true
            }

            if jabberID == nil || myPassword == nil {
                println("no jabberID set:" + "\(jabberID)")
                println("no password set:" + "\(myPassword)")
                return false
            }

            stream.myJID = XMPPJID.jidWithString(jabberID)
            password = myPassword

            var error: NSError?
            if !stream.connectWithTimeout(XMPPStreamTimeoutNone, error: &error) {
                var alertView: UIAlertView? = UIAlertView(title:"Error", message: "Cannot connect to \(error!.localizedDescription)", delegate: nil, cancelButtonTitle: "Ok")
                alertView!.show()

                return false
            }
        }
        return true
    }

希望对您有所帮助!