我们到底需要在.widgetURL()中指定什么URL?
在Widget Code的WWDC会议上,他们使用了.widgetURL(entry.character.url)。这里的entry.character.url是URL(string: "game:///egghead")!
请解释一下我们需要在这里传递的网址(widgetURL())才能到达APP的特定视图?
发布于 2020-10-15 13:03:07
url的格式为scheme://someAction
冒着过于简单的风险,该方案通常是您的应用程序的名称。这是您确认url是否适用于您的应用程序的方式
在小部件主体中,您可以使用widgetURL修饰符:
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
}
}
}我通常将url格式设置为myApp://someAction/parms,这样我就可以解析该url以确定应用程序需要做什么,并向其传递一些参数。有些人喜欢通过使用URLComponents - path、queryItems等正确形成URL来做到这一点,这可能是最佳实践。
https://stackoverflow.com/questions/64137773
复制相似问题