我已经使用可可pod 'PusherSwift‘在Swift 3中为我的应用程序集成了Pusher框架。
以下是代码行:
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() 这个应用程序在pusher.connect()的- self.delegate?.debugLog?(message: "[PUSHER DEBUG] Network reachable")行崩溃。未显示任何崩溃报告。
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
}()发布于 2016-12-14 18:42:22
这看起来你可能会被同样的问题described here所困扰。
我认为这是因为PusherConnection对象在可达性闭包中被视为无主,但因为您没有在viewDidLoad函数外部保留对推送器实例的引用,所以connection对象会被清除,而可达性对象则不会。
因此,要解决这个问题,您可能需要在实例化它的函数外部声明pusher对象,这样它就会挂起。例如:
class ViewController: UIViewController, PusherDelegate {
var pusher: Pusher! = nil
...然后在viewDidLoad中像往常一样执行pusher = Pusher(...。
发布于 2016-12-18 09:40:50
我不认为你需要使用pusher.connect()。
有关示例detailed docs,请参阅
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() 然后绑定到您的通道。
https://stackoverflow.com/questions/41135569
复制相似问题