socket.io
迅速なiOSアプリで実装しています。
現在、いくつかのパネルでサーバーをリッスンしており、メッセージの受信を待機しています。getChatMessage
各パネルで関数を呼び出すことでそうしています。
func getChatMessage(){
SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//do sth depending on which panel user is
})
}
}
しかし、私はそれが間違ったアプローチであることに気づき、それを変更する必要があります-着信メッセージのリッスンを1回だけ開始し、メッセージが来たときに、このメッセージをリッスンする任意のパネルに渡します。
そのため、NSNotificationCenterを介して着信メッセージを渡したいと思います。これまでのところ、何かが起こったという情報を渡すことができましたが、データ自体は渡せませんでした。私はそれをしていた:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil)
それから私は呼ばれる関数を持っていました:
func showSpinningWheel(notification: NSNotification) {
}
そして、私がそれを呼びたいと思ったときはいつでも、
NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self)
それでは、オブジェクトを渡し、messageInfo
呼び出される関数に含めるにはどうすればよいですか?
yourValue
、通知で呼び出される関数でこれをフェッチするにはどうすればよいshowSpinningWheel
ですか?
.userinfo
likeの 使用notification.userinfo
NSNotificationCenter.defaultCenter().postNotificationName("hideSpinner", object: nil, userInfo: yourvalue)