macOS Catalyst `requestSceneSessionActivation` 需要多窗口采用

Posted

技术标签:

【中文标题】macOS Catalyst `requestSceneSessionActivation` 需要多窗口采用【英文标题】:macOS Catalyst `requestSceneSessionActivation` requires multiwindow adoption 【发布时间】:2020-03-29 19:17:51 【问题描述】:

当尝试在 macOS Catalyst 应用程序中打开新窗口时,我使用此枚举来描述 NSUserActivity 的实例:

enum Activity: String 
  case list
  case settings

  var type: String 
    "com.example.app.\(rawValue)"
  

  var userActivity: NSUserActivity 
    NSUserActivity(activityType: type)
  

然后打开一个新窗口,我在按钮点击处理程序中使用此代码,如this raywenderlich.com tutorial 中所述:

UIApplication
  .shared
  .requestSceneSessionActivation(
    nil,
    userActivity: Activity.settings.userActivity,
    options: nil,
    errorHandler: nil
  )

但是,这不起作用,我总是在调试器控制台中收到此错误消息:

[Scene] Calling -[UIApplication requestSceneSessionActivation:] requires multiwindow adoption.

此错误消息是什么意思,以及此处可能缺少哪些步骤以使对多个窗口的支持在 Catalyst 应用程序中工作?

【问题讨论】:

【参考方案1】:

实际工作是将UIApplicationSceneManifest 字典中的UIApplicationSupportsMultipleScenes 键设置为Info.plist 中的YES

    <key>UIApplicationSceneManifest</key>
    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <true/>
    </dict>

或者,如果您更喜欢 Xcode GUI,请查看此屏幕截图:

不幸的是,the raywenderlich.com tutorial 或任何 Apple 的 Catalyst 指南中似乎都没有记录此设置。它似乎只记录在this Developer reference page。

【讨论】:

以上是关于macOS Catalyst `requestSceneSessionActivation` 需要多窗口采用的主要内容,如果未能解决你的问题,请参考以下文章

macOS Catalyst `requestSceneSessionActivation` 需要多窗口采用

SwiftUI 将图像保存到 macOS Catalyst

macOS Catalyst:如何使用媒体传输协议读取 USB 设备? IOUSBHost API可以吗?

苹果iOS 14代码暗示:macOS Catalyst版Messages应用将至!

腾讯QQ PC测试版和macOS Catalyst转制体验版更新

腾讯QQ全新macOS Catalyst转制体验版发布:众多手机QQ特性,版本号8.3.6