2015-06-29 5 views
0

Я использую XMPPFramework. Мое соединение XMPP всегда закрывается, когда я заблокировал экран iPhone. Мне нужно подключиться к моему серверу Openfire, когда я разблокирую экран.Как подключиться к серверу Openfire после разблокировки экрана iPhone?

Вот как я XMPPReconnect (в Swift):

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

Тем не менее, кажется, что это никогда не воссоединяется, когда я разблокировать экран. Я правильно использую XMPPReconnect?

Как достичь своей цели?

+0

Что такое сервер открытого огня? Укажите ссылку или обновите теги. – Droppy

+0

OpenFire: http://www.igniterealtime.org/projects/openfire/ – Brian

ответ

3

Вы должны написать код в своем appdelegate в applicationDidBecomeActive. becuase при разблокировке экрана этого метод будет вызывать, и в этом методе вы должны вызвать метод подключения к OpenFire ....

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 
    } 

Надеется, что это поможет!

Смежные вопросы