Mac Catalyst 应用程序如何处理生命周期转换?

How do Mac Catalyst apps handle lifecycle transitions?

这只是我的应用程序,还是所有 Mac 使用 Catalyst 制作的应用程序都不会经历生命周期更改,除非在启动或退出时?

启动后,将调用 UIWindowSceneDelegate 方法 sceneWillEnterForeground:sceneDidBecomeActive:。退出时 sceneWillResignActivesceneDidEnterBackground 被调用。

但是当应用程序保持打开状态并且我更改为新应用程序,或者让我的计算机休眠,或者执行其他我希望强制应用程序进入后台状态的正常人类使用模式时,这些都不会发生。我留下的印象是,只要用户不退出,应用程序就永远不会离开前台状态。这是正确的吗?

如果我实现对自动或突然终止的支持(详见 here),应用 enter/exit 状态是否会更频繁?

我是不是理解错了什么?

感谢您的帮助。

(注意:我构建了一个记录应用程序转换的系统——而不是 'scene' 转换——以便能够在 Xcode 中没有 运行 应用程序的情况下进行测试。)

我的情况很典型:Mac 使用 Catalyst 制作的应用程序在生命周期阶段的转换并不像在 iOS 上那样频繁。

来自 this article

  • 然而,状态变化对 Mac 的影响较小,因为在 macOS 上几乎总是前景 + 活动。
  • 应用仅在终止时进入后台,在后台启动时处于非活动状态。
  • 您的应用仍应考虑 App Napp

就我而言,解决方法有所帮助:

#if targetEnvironment(macCatalyst)
   nc.addObserver(self, selector: #selector(hold), name: NSNotification.Name("NSApplicationDidResignActiveNotification"),object: nil)
   nc.addObserver(self, selector: #selector(resume), name: NSNotification.Name("NSApplicationDidBecomeActiveNotification"),object: nil)
#endif

希望以后有更优雅的UIScene选择。