跟踪用户何时返回应用或将焦点从 Mac Catalyst window 上移开

Track when user comes back to app or moves focus away from Mac Catalyst window

我想使用 UISceneSession 生命周期的委托方法来帮助通知我的 Mac Catalyst 应用程序,当用户将注意力从应用程序移开时 (window) 和然后回到应用程序 (window)。

当应用程序在 Mac 上首次启动时,sceneWillEnterForegroundsceneDidBecomeActive 被成功调用,但是当我专注于另一个应用程序时,sceneWillEnterForeground 等委托方法却没有叫。为什么?

如果您检查 NSWindowDelegate.windowDidBecomeMain(_:),您会注意到它的参数是一个名称为 NSWindowDidBecomeMainNotification.

的通知

因此,您可以观察到该通知会在您的应用程序中的 window 成为焦点时收到通知:

NotificationCenter.default.addObserver(forName: .init("NSWindowDidBecomeMainNotification"), object: nil, queue: nil) { notification in
    print("This window became focused:", notification.object)
}

您还可以观察 NSWindowDidResignMainNotification,以便在您的应用程序中的 window 失去焦点时收到通知。