Swift 从未收到NotificationCenter Post请求
我正试图在我的应用程序中将一条消息发布到一个可观察对象上,但由于某些原因,它根本不起作用,我唯一可以将其归因于安装Swift 从未收到NotificationCenter Post请求,swift,swift3,Swift,Swift3,我正试图在我的应用程序中将一条消息发布到一个可观察对象上,但由于某些原因,它根本不起作用,我唯一可以将其归因于安装https://bugfender.com/由于根本没有错误消息,有人能告诉我此代码有什么问题,或者如何找到根本原因吗 这两个代码段都已移动到AppDelegate func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.L
https://bugfender.com/
由于根本没有错误消息,有人能告诉我此代码有什么问题,或者如何找到根本原因吗
这两个代码段都已移动到AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
NotificationCenter.default.post(name: Notification.Name("TestPost"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(onDidReceiveData(_:)), name: Notification.Name("TestPost"), object: nil)
return true
}
接收器的功能是
@objc func onDidReceiveData(_ notification:Notification) {
// Do something now
print("XXXXXX received")
}
====使用自定义电容器插件的实际代码进行更新=======
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
... code for receiving notification starts here
NotificationCenter.default.post(name: Notification.Name("TestPost"), object: nil)
... code for receiving notification ends here
return true
}
您需要在发布通知之前注册您的观察员。:)这确实解决了上述问题。我有一个曲线球给你,对于我的确切问题,add observer实际上在public override func load()中的另一个类中,你知道如何让它工作吗?我是一个敏捷的noob什么条件应该触发通知?你不想在didFinishLaunchingWithOptions中触发它,是吗?我集成了一个信号,它实际上在didFinishLaunchingWithOptions中接收或处理通知,所以我想将通知数据推送到另一个类上,这样我就可以通过桥接器将其传送到更新过的Ionic/Capactor网络视图,我省略了一个信号的东西,因为我只需要让这个post请求工作,然后我可以在它周围添加一个信号的东西。这是我以前做过的,但现在它根本不起作用,我不知道为什么不看到你的信号就很难说。如果你把它贴出来会有帮助的。但是…我假设一个信号有回叫。您应该从该回调调用
post
。
import Foundation
import Capacitor
@objc(myHelpers)
public class myHelpers: CAPPlugin {
public override func load() {
print("PluginLoaded")
let nc = NotificationCenter.default
nc.addObserver(self, selector: #selector(handleSignal), name: Notification.Name("TestPost"), object: nil)
}
@objc func handleSignal()
{
print("XX WE RECEIVED AN EVENT AT handleSignal")
notifyListeners(
"myPluginEvent",
data: [:],
retainUntilConsumed: true
)
}
}