2015-10-07 2 views
0

Я использую клиент Pusher для iOS, устанавливая его через CocoaPods (pod 'libPusher', '~> 1.5').Клиент IOS Pusher автоматически не подключается

Все это прекрасно подходит, и события проходят через штраф. Однако, если устройство (iPhone 6s под управлением iOS 9.0.2) теряет подключение к Интернету (вызванное тем, что я перехожу в режим самолета), то через минуту (я выхожу из режима полета), он не восстанавливает соединение.

Я добавил несколько UIAlertViews, чтобы проверить, что он делает на основе его метода делегирования.

Первоначально connectionWillConnect и connectionDidConnect показаны.

Когда включен режим самолета connectionWillConnect, тогда отображаются connectionWillAutomaticallyReconnection afterDelay of 0.0.

(Тогда не осталось ни на минуту или около того, без интернета.)

Тогда ничего, даже после подключения обратно к Интернету. И события больше не принимаются должным образом.

-

Вот класс я использую для всех Pusher вещей (написанных в Swift 2.0), которая хорошо работает до тех пор, пока соединение не будет потеряно.

class PusherInterface: NSObject, PTPusherDelegate { 

    // MARK: - PusherInterface Shared Instance 

    /// Singleton instance of the PusherInterface class. 
    private static let sharedInstance = PusherInterface() 


    // MARK: - Pusher Credentials 

    private static let pusherAppId = "MY_APP_ID" 
    private static let pusherKey = "MY_KEY" 
    private static let pusherSecret = "MY_SECRET" 

    /// The connected client used by Pusher to connect to event channels 
    private static var client: PTPusher = { 
     let pusherClient = PTPusher.pusherWithKey(pusherKey, delegate: PusherInterface.sharedInstance) 
     pusherClient.connect() 
     return pusherClient as! PTPusher 
     }() 


    // MARK: - Setup Pusher 

    static func startListening() { 
     client.subscribeToChannelNamed("MY_CHANNEL") 

     client.bindToEventNamed("MY_EVENT") { pusherEvent in 
      // Does some stuff with the data back 
     } 
    } 


    // MARK: - Pusher Delegate 

    func pusher(pusher: PTPusher!, connectionDidConnect connection: PTPusherConnection!) { 
     NSOperationQueue.mainQueue().addOperationWithBlock { 
      UIAlertView(title: "connectionDidConnect", message: "", delegate: nil, cancelButtonTitle: "Dismiss").show() 
     } 
    } 

    func pusher(pusher: PTPusher!, connectionWillAutomaticallyReconnect connection: PTPusherConnection!, afterDelay delay: NSTimeInterval) -> Bool { 
     NSOperationQueue.mainQueue().addOperationWithBlock { 
      UIAlertView(title: "connectionWillAutomaticallyReconnect", message: "afterDelay \(delay)", delegate: nil, cancelButtonTitle: "Dismiss").show() 
     } 

     return true 
    } 

    func pusher(pusher: PTPusher!, connectionWillConnect connection: PTPusherConnection!) -> Bool { 
     NSOperationQueue.mainQueue().addOperationWithBlock { 
      UIAlertView(title: "connectionWillConnect", message: "", delegate: nil, cancelButtonTitle: "Dismiss").show() 
     } 

     return true 
    } 

} 

Любые идеи о том, почему он не работает?

Все идеи & теории были бы очень признательны! Спасибо :)

ответ

0

Это не работало для меня ни с Swift. Я установил swift implementation Pusher и теперь отлично работает.

let pusher = Pusher(key: "c984997151153c177dc2") 
    pusher.connect() 

    let channel = pusher.subscribe("test_channel") 
    channel.bind("my_event") { (event: AnyObject?) -> Void in 
     print("my_event push received ") 
    } 
+0

Это не работает для нас, мы соединили Pusher в то время как внутри приложения, мы остались в приложение и отсоединен от Интернета, так что толкатель отключен также и тогда мы подключили на интернет, но Толкатель остался disconeccted – FosAvance

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

  • Нет связанных вопросов^_^