我有一个简单的 SwiftUI 应用程序,带有一个 onOpenURL 处理程序来处理通用链接,我的目标是 macOS:
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
.onOpenURL { url in
print("Inside onOpenURL....")
}
}
}
我还在我的域中配置了 Associated Domains 功能和 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 的,并且需要通用链接。
有没有人发现这个问题,以及如何解决它?
谢谢