如何在收到本地通知和推送通知时实现 observable。在应用程序委托中,我们会收到通知
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)
这个类最好的一点是我们可以通过它发出和使用任何对象。