在主应用程序发布的 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 或共享容器中的文件。