从主应用程序发布的今日小部件中观察通知

时间:2017-08-31 16:58:52

标签: swift nsnotificationcenter today-extension notificationcenter

我已在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函数移动到主应用程序进行测试,并且在那里工作正常。

1 个答案:

答案 0 :(得分:1)

您的主应用程序和今天的扩展程序在手机上作为单独的进程运行。 NSNotificationCenter仅适用于单个流程。

要在您的扩展程序和主应用程序之间传递信息,您可以使用NSUserDefaults或共享容器中的文件。