首页 > 解决方案 > 在 macOS 上的 SwiftUI 中打开新窗口时如何验证深层链接?

问题描述

TLDR:如何区分应用程序内部发送的链接和源自应用程序外部的链接?

细节:

如果 SwiftUI 应用程序有多个窗口(场景),则可以通过此处解释的深层链接以编程方式打开一个窗口。

上下文数据可以包含在链接中。例如图书馆应用程序中的图书 ID。

fancyLibraryApp:viewer/book/42

将以下修饰符添加到您的视图以处理此 url 并查看一本书。

var body: some Scene
{
    Text("Title of \(book)").onOpenURL 
    {
        self.id = $0.description.lastPathComponent //parse the url as appropriate 
    }
}

Book 是您从通过 url 传递的 id 检索的值或对象。id 应该是一个绑定,以便更新视图。

链接可以从应用程序内的其他地方发送,也可以从外部源发送,例如 safari 或终端应用程序 ( open fancyLibraryApp:viewer/book/42)。

因此必须验证url 。用户是否允许阅读这本书?用户是否登录?

Apple在此处解释了如何验证传入的 url ,但仅适用于 iOS。

NSApplicationDelegate 有一个功能 application(_ application: NSApplication, open urls: [URL])

然而,该函数是在视图修饰符之后调用的onOpenURL

那么如何验证 url 呢?

标签: macosswiftuideep-linking

解决方案


推荐阅读