与本地Mac上的macOS应用之间的互通

时间:2018-11-23 17:09:04

标签: swift

在Swift中,有没有一种简单的方法可以让一个macOS应用将消息发送到同一mac(localhost)上的另一个macOS应用。我有两个macOS应用程序,其中一个是菜单应用程序。在某些情况下,标准macOS应用程序需要向菜单应用程序发送通知(单程票,开火和忘记通知)。

1 个答案:

答案 0 :(得分:0)

如何实现此目标有许多不同的选择。每个都有自己的优点和缺点。

最简单的方法是使用Foundation的DistributedNotificationCenter发送通知。就像常规的NotificationCenter一样,但是跨过程边界。

在接收方,您可以像这样注册观察者:

DistributedNotificationCenter.default().addObserver(forName: NSNotification.Name("com.mycompany.MyNotification"), object: nil, queue: nil) { notification in 
    print(notification) 
}

在发送方,您将发布如下通知:

DistributedNotificationCenter.default().post(name: NSNotification.Name("com.mycompany.MyNotification"), object: nil, userInfo: ["data": "to send"])

这不是很安全-任何进程都可以发送和接收这些通知。因此,如果它们包含私有数据,则不应使用此方法。这也意味着您应该使用唯一的通知名称。在此处以一个反向的DNS名称(例如com.mycompany.)开始是个好主意。

如果您的应用已被沙箱化,则存在另一个限制,即您无法发送userInfo字典。