gpt4 book ai didi

macos - 具有应用程序生命周期的 SwiftUI macOS 应用程序在收到通用链接时不会触发 onOpenURL

转载 作者:行者123 更新时间:2023-12-05 03:44:50 26 4
gpt4 key购买 nike

我有一个简单的 SwiftUI 应用程序,它带有一个 onOpenURL 处理程序来处理通用链接,我的目标是 macOS:

var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
.onOpenURL { url in
print("Inside onOpenURL....")
}
}
}

我还在我的域中配置了关联域功能和 apple-app-site-association 文件,因此当打开指向该域的链接时,打开的是我的应用程序而不是 Safari。因此,在调试应用程序并单击通用链接(例如,在 Notes 应用程序中)以打开我的应用程序(它确实如此)时,我希望在输出窗口中看到“Inside onOpenURL ....”消息Xcode,表示 onOpenURL 处理程序正在处理通用链接。

但这不会发生。每次我单击通用链接时,应用程序都会打开,但 Xcode 中没有显示任何内容。这是在 macOS Big Sur 11.1 和最近更新的 11.2 中。

但是,如果将相同的代码用于针对 iOS 14 应用程序,则此方法可以正常工作,无需更改任何代码,只需更改应用程序的目标即可。

尝试了很多东西后,我还发现如果我使用自定义 URL 方案(例如 myapp://),则会在我的 macOS 应用程序中调用 onOpenURL 处理程序。我可以看到“Inside onOpenURL...”消息。但这不会发生在通用链接上,我的应用程序是针对 macOS 的,因此需要通用链接。

有没有人发现这个问题,如何解决?

谢谢

最佳答案

看来您有时必须为 macOS 使用不同的功能。

.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { userActivity in
guard let url = userActivity.webpageURL else { return }
print("Inside onContinueUserActivity....")
}

我建议保留 onOpenURL 以防某些情况下一个有效而另一个无效(例如,如果您手动启动 onOpenURL 将被触发来自您自己的应用程序中的深层链接)。

关于macos - 具有应用程序生命周期的 SwiftUI macOS 应用程序在收到通用链接时不会触发 onOpenURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66218196/

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