通过 SceneDelegate 的催化剂状态恢复不起作用

Catalyst State Restoration via SceneDelegate not working

当通过停靠图标(右键单击 -> 退出)退出我的催化剂应用程序时,我的 SceneDelegate 的 stateRestorationActivity(for scene: UIScene) 方法被调用并且我 return 一个非零的 NSUserActivity。

但是,当重新启动我的应用程序时,scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)

connectionOptions 中没有用户 activity

这个功能对其他人是否正确?我是否需要以特定方式构建我的 UserActivity 才能在 Catalyst 中工作?它在 iOS 上 运行 时正常运行。

在 WWDC2020 实验室期间与工程师谈过这个问题。我的问题,看起来很奇怪,是在退出应用程序后过早地重新启动它。

Catalyst 上的

iOS 个应用程序 运行 将在退出后继续存在。这可以在 Activity 监视器中观察到。据解释,这是应用程序可以完成任何已注册后台任务的时间段。

等待我的应用程序从 ActivityMonitor 中消失然后重新启动后,它恢复了 stateRestorationActivity(for scene: UIScene)

中提供的 activity

作为参考,还有另一种可能性:确保未选中系统偏好设置“退出应用程序时关闭 windows”(在“常规”窗格中)。如果选中,状态恢复将在 quitting/restarting 应用程序时被禁用。