SwiftUI 中的 widgetURL

widgetURL in SwiftUI

我们需要在 .widgetURL() 中指定什么 URL?

在关于 Widget Code Along 的 WWDC 会议中,他们使用了 .widgetURL(entry.character.url)。这里 entry.character.url 是 URL(string: "game:///egghead")!

请说明URL我们需要经过这里(widgetURL())才能到达APP的特定视图?

url 的格式为 scheme://someAction

冒着过度简化的风险,方案通常是您应用的名称。这就是您确认 url 适用于您的应用的方式

在您的小部件主体中使用小部件URL 修饰符:

var body: some View {
        content().widgetURL("myApp://someAction")
}

然后在您的应用程序中使用 onOpenURL 修饰符来获取 url,检查它是否适合您的应用程序并解析它以确定要做什么。 someAction 是您发送给应用程序的消息,告诉它该做什么

 var body: some Scene {
        WindowGroup {
            ContentView()
                .onOpenURL { url in
                    guard url.scheme == "myApp" else { return }
                    print(url) // parse the url to get someAction to determine what the app needs do
                }
        }
    }

我通常制作 myApp://someAction/parms 形式的 url 这样我就可以解析 url 以确定应用程序需要做什么并向它传递一些参数.有些人喜欢通过使用 URL 组件 - 路径、queryItems 等正确形成 URL 来做到这一点。这可能是最佳实践。