gpt4 book ai didi

macos - SwiftUI macOS 应用程序与 `App` 协议(protocol)深度链接打开新的应用程序实例

转载 作者:行者123 更新时间:2023-12-04 08:32:09 27 4
gpt4 key购买 nike

这是在 SwiftUI macOS 应用程序中使用新的 App协议(protocol)和 @main .
使用流程:

  • 用户启动应用程序并单击打开特定网页的按钮
  • 网页最终重定向到应用程序的 URL 方案,打开应用程序并调用 onOpenURL(_:)

  • 预期行为 :
    深层链接被发送到现有的、当前打开的应用程序实例
    实际行为 :
    启动了一个新的应用程序实例,导致该应用程序的两个实例处于事件状态
    备注 :实际上没有任何代码要添加,因为问题只是依赖于向应用程序添加 URL 方案并让网页进入它。

    最佳答案

    onOpenURL(_:)实际上并没有启动一个新的应用程序实例,它是在现有实例中创建一个新窗口。文档会建议这只发生在 macOS 上(因为 iOS 只支持单个窗口)。
    您需要使用 .handlesExternalEvents(preferring:allowing:)高阶 View 上的修饰符。调用handlesExternalEvents将覆盖在 macOS 上的应用程序中创建新窗口的默认行为。就像是:

    @main
    struct myApp: App {
    var body: some Scene {
    WindowGroup {
    ContentView()
    .handlesExternalEvents(preferring: ["myscheme"], allowing: ["myscheme"])
    }
    }
    }
    然后在 subview 中(例如 ContentView() ):
    var body: some View {
    VStack {
    // your UI
    }
    .onOpenUrl{ url in
    // do something with the deep link url
    }
    }

    关于macos - SwiftUI macOS 应用程序与 `App` 协议(protocol)深度链接打开新的应用程序实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64965480/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com