Swiftui 如何发送要接收的Scene.handlesExternalEvents(匹配:)的事件?

Swiftui 如何发送要接收的Scene.handlesExternalEvents(匹配:)的事件?,swiftui,Swiftui,在2020年苹果平台API betas的中途,添加了主题中提到的方法。(向AnyView添加了类似的方法)是否有人知道首先发送外部事件的对应API在哪里?使用发送场景在macOS中打开新窗口的示例。handlesExternalEvents @main struct TestAppApp: App { var body: some Scene { WindowGroup { MainView() } .handles

在2020年苹果平台API betas的中途,添加了主题中提到的方法。(向
AnyView
添加了类似的方法)是否有人知道首先发送外部事件的对应API在哪里?

使用发送
场景在macOS中打开新窗口的示例。handlesExternalEvents

@main
struct TestAppApp: App {
    var body: some Scene {
        WindowGroup {
            MainView()
        }
        .handlesExternalEvents(matching: Set(arrayLiteral: Wnd.mainView.rawValue))
        
        WindowGroup {
            HelperView()
        }
        .handlesExternalEvents(matching: Set(arrayLiteral: Wnd.helperView.rawValue))
    }
}

enum Wnd: String, CaseIterable {
    case mainView   = "MainView"
    case helperView = "OtherView"
    
    func open(){
        if let url = URL(string: "taotao://\(self.rawValue)") {
            print("opening \(self.rawValue)")
            NSWorkspace.shared.open(url)
        }
    }
}
和2个窗口/视图代码:

extension TestAppApp {
    struct MainView: View {
        var body: some View {
            VStack {
                Button("Open Main View") {
                    Wnd.mainView.open()
                }
                
                Button("Open Other View") {
                    Wnd.helperView.open()
                }
            }
            .padding(150)
        }
    }

    struct HelperView: View {
        var body: some View {
            HStack {
                Text("This is ") + Text("Helper View!").bold()
            }
            .padding(150)
        }
    }
}

Info.plist还需要更改:


我的理解是,该修改器在窗口组或视图上工作,用于指示场景或视图支持通过切换、聚光灯、SiriKit或通用链接发送的
NSUserActivity
。在Info.plist中声明应用程序支持的活动(作为字符串标识符),并在应用程序结构中指示哪个场景处理哪个活动,以便框架可以决定要打开的正确场景。换句话说,它不是为了在应用程序的不同对象中发送
n事件
,而是为了让SwiftUI知道哪个视图或场景可以处理应用程序广告的用户活动