我已在swift文件中声明了通知名称,该文件具有主应用和今日小部件的目标成员资格:
let SpecialKey = Notification.Name("howLongNotif")
然后在我的主应用程序视图控制器中,我在位置更新时发布通知(位置更新的后台模式已启用):
NotificationCenter.default.post(name: SpecialKey, object: nil, userInfo: nil)
在我今天的widget viewDidLoad中,我正在观察它:
NotificationCenter.default.addObserver(self, selector: #selector(TodayViewController.dataReceived), name: SpecialKey, object: nil)
并且:
func dataReceived(_notification: NSNotification) {
print("data received")
}
但永远不会调用dataReceived
函数。
我通过将观察者和dataReceived函数移动到主应用程序进行测试,并且在那里工作正常。
答案 0 :(得分:1)
您的主应用程序和今天的扩展程序在手机上作为单独的进程运行。 NSNotificationCenter
仅适用于单个流程。
要在您的扩展程序和主应用程序之间传递信息,您可以使用NSUserDefaults
或共享容器中的文件。