在主应用程序发布的 Today Widget 中观察通知
Observing Notification in Today Widget which is posted from main app
我已在 swift 文件中声明了通知名称,该文件具有主应用程序和今日小部件的目标成员资格:
let SpecialKey = Notification.Name("howLongNotif")
然后在我的主应用程序视图控制器中,我在位置更新时发布通知(位置更新的后台模式打开):
NotificationCenter.default.post(name: SpecialKey, object: nil, userInfo: nil)
在我今天的小部件 viewDidLoad 中,我是这样观察它的:
NotificationCenter.default.addObserver(self, selector: #selector(TodayViewController.dataReceived), name: SpecialKey, object: nil)
并拥有:
func dataReceived(_notification: NSNotification) {
print("data received")
}
但是 dataReceived
函数从未被调用。
我通过将观察者和 dataReceived 函数移动到主应用程序进行了测试,它在那里工作正常。
您的主应用和今天的扩展应用 运行 在 phone 上作为单独的进程。 NSNotificationCenter
仅适用于单个进程。
要在您的扩展程序和主应用程序之间传递信息,您可以使用 NSUserDefaults
或共享容器中的文件。
我已在 swift 文件中声明了通知名称,该文件具有主应用程序和今日小部件的目标成员资格:
let SpecialKey = Notification.Name("howLongNotif")
然后在我的主应用程序视图控制器中,我在位置更新时发布通知(位置更新的后台模式打开):
NotificationCenter.default.post(name: SpecialKey, object: nil, userInfo: nil)
在我今天的小部件 viewDidLoad 中,我是这样观察它的:
NotificationCenter.default.addObserver(self, selector: #selector(TodayViewController.dataReceived), name: SpecialKey, object: nil)
并拥有:
func dataReceived(_notification: NSNotification) {
print("data received")
}
但是 dataReceived
函数从未被调用。
我通过将观察者和 dataReceived 函数移动到主应用程序进行了测试,它在那里工作正常。
您的主应用和今天的扩展应用 运行 在 phone 上作为单独的进程。 NSNotificationCenter
仅适用于单个进程。
要在您的扩展程序和主应用程序之间传递信息,您可以使用 NSUserDefaults
或共享容器中的文件。