ローカル通知とプッシュ通知を受信したときにオブザーバブルを実装するにはどうすればよいですか。アプリデリゲートでは、私たちは通知しています
didReceiveLocalNotification
と
didReceiveRemoteNotification
これらの通知を他の画面で聞くにはどうすればよいですか? 通知に NotificationCenter を使用していましたが、RX-Swift を使用したいと考えています。私はこの方法で試しましたが、うまくいきません。
extension UILocalNotification {
var notificationSignal : Observable<UILocalNotification> {
return Observable.create { observer in
observer.on(.Next(self))
observer.on(.Completed)
return NopDisposable.instance
}
}
}
誰でも私を助けることができますか?
更新しました:
こんにちは、私はあなたが慣れているのと同じ方法を使用してその解決策を見つけましたが、いくつかの変更があります.
class NotificationClass {
static let bus = PublishSubject<AnyObject>()
static func send(object : AnyObject) {
bus.onNext(object)
}
static func toObservable() -> Observable<AnyObject> {
return bus
}
}
AppDelegate から通知を送信します。
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
NotificationClass.send(notification)
}
次に、他のクラスを観察します。
NotificationClass.bus.asObserver()
.subscribeNext { notification in
if let notification : UILocalNotification = (notification as! UILocalNotification) {
print(notification.alertBody)
}
}
.addDisposableTo(disposeBag)
このクラスの最も良い点は、anyObject を介して発行および消費できることです。