我已经使用可可豆pod [pod'pusherswift']集成了我的应用程序的推动器框架。
这些是代码的行:
let pusher = Pusher(key: "XXXXXXXXXXXXXXXXXXXX")
// subscribe to channel and bind to event
let channel = pusher.subscribe("test_channel")
let _ = channel.bind(eventName: "my_event", callback: { (data: Any?) -> Void in
if let data = data as? [String : AnyObject] {
if let message = data["message"] as? String {
print(message)
}
}
})
pusher.connect()
该应用在线路-self.delegate?.debugLog?(message: "[PUSHER DEBUG] Network reachable")
处的pusher.connect()
崩溃。未显示崩溃报告。
open lazy var reachability: Reachability? = {
let reachability = Reachability.init()
reachability?.whenReachable = { [unowned self] reachability in
self.delegate?.debugLog?(message: "[PUSHER DEBUG] Network reachable")
if self.connectionState == .disconnected || self.connectionState == .reconnectingWhenNetworkBecomesReachable {
self.attemptReconnect()
}
}
reachability?.whenUnreachable = { [unowned self] reachability in
self.delegate?.debugLog?(message: "[PUSHER DEBUG] Network unreachable")
}
return reachability
}()
这看起来您可能会被此处描述的相同问题咬伤。
我认为这是指pusherConnection对象被视为未能在可及性封闭中,但是因为您没有在ViewDidload函数之外对推动器实例进行引用,因此连接对象被清除,而可触及性对象则没有。
因此,要解决此问题,您可能需要在实例化函数的外部声明Pusher对象,以使其徘徊。例如
class ViewController: UIViewController, PusherDelegate {
var pusher: Pusher! = nil
...
,然后在viewDidLoad
内进行pusher = Pusher(...
,如正常。
我认为您不需要使用pusher.connect()
。
参见例如详细文档:
let pusher = Pusher(key: "YOUR_APP_KEY")
let myChannel = pusher.subscribe("my-channel")
myChannel.bind(eventName: "new-price", callback: { (data: Any?) -> Void in
if let data = data as? [String : AnyObject] {
if let price = data["price"] as? String, company = data["company"] as? String {
print("(company) is now priced at (price)")
}
}
})
或者先尝试一下,看看它是否连接:
let pusher = Pusher(key: "XXXXXXXXXXXXXXXXXXXX")
pusher.connect()
然后绑定到您的通道。