Я использую клиент 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
}
}
Любые идеи о том, почему он не работает?
Все идеи & теории были бы очень признательны! Спасибо :)
Это не работает для нас, мы соединили Pusher в то время как внутри приложения, мы остались в приложение и отсоединен от Интернета, так что толкатель отключен также и тогда мы подключили на интернет, но Толкатель остался disconeccted – FosAvance