最小化的 macOS 应用程序 + distributedNotificationCenter(macOS 上的后台模式)
Minimized macOS application + distributedNotificationCenter (background mode on macOS)
我已经实现了 macOS 应用 + 扩展。
该扩展可能会通过 DistributedNotificationCenter.default() 和 postNotificationName(_ name: ...).
向应用程序发送通知
问题与 macOS 上的应用程序生命周期有关 - 如果用户最小化应用程序并且扩展程序(运行)发送带有 'deliverImmediately' 标志的通知会发生什么。
该应用程序是否能够处理它,即使是在最小化的情况下?如果不是,还有其他方法可以实现此行为吗?
P.S - 我在文档中没有找到任何内容,当我试图检查发生了什么时,有时应用会收到通知,有时却没有..所以要求检查是什么预期的行为。
应用程序在最小化时不会暂停。被最小化是 NSWindow
而不是 NSApplication
的状态。应用程序的 运行 循环仍在执行,可能频率较低,当然,window 在最小化时不会接收任何键盘或鼠标事件,但应用程序仍将能够处理通知、AppleEvents 、网络或文件 I/O 等...如果通知涉及最小化 window 与 NSWindow.deminiaturize(_ sender: Any?)
的用户交互,您可能需要“取消”最小化。
如果该应用程序被隐藏,它仍然 运行s,您需要使用 NSApplication.activate(_ sender: Any?)
激活它以执行任何 UI.
我已经实现了 macOS 应用 + 扩展。 该扩展可能会通过 DistributedNotificationCenter.default() 和 postNotificationName(_ name: ...).
向应用程序发送通知问题与 macOS 上的应用程序生命周期有关 - 如果用户最小化应用程序并且扩展程序(运行)发送带有 'deliverImmediately' 标志的通知会发生什么。 该应用程序是否能够处理它,即使是在最小化的情况下?如果不是,还有其他方法可以实现此行为吗?
P.S - 我在文档中没有找到任何内容,当我试图检查发生了什么时,有时应用会收到通知,有时却没有..所以要求检查是什么预期的行为。
应用程序在最小化时不会暂停。被最小化是 NSWindow
而不是 NSApplication
的状态。应用程序的 运行 循环仍在执行,可能频率较低,当然,window 在最小化时不会接收任何键盘或鼠标事件,但应用程序仍将能够处理通知、AppleEvents 、网络或文件 I/O 等...如果通知涉及最小化 window 与 NSWindow.deminiaturize(_ sender: Any?)
的用户交互,您可能需要“取消”最小化。
如果该应用程序被隐藏,它仍然 运行s,您需要使用 NSApplication.activate(_ sender: Any?)
激活它以执行任何 UI.