我有一个具有深度链接支持的 SwiftUI 应用程序。当
.onOpenUrl
被触发时,应用程序将导航到特定屏幕。每个视图都可以监听该深层链接 url,因此拥有正确设置相关状态的所有信息(例如选择特定选项卡的 TabView
)。
我对小部件使用深层链接。
现在我的应用程序支持推送通知,我想使用深度链接导航处理来根据来自
根据 UIApplicationDelegate 方法的推送通知
userInfo
打开特定屏幕。
这个想法是从该用户信息生成一个深层链接 url 并将其传递到视图层次结构中,以便每个视图都可以对
.onOpenUrl
做出反应并根据打开的推送通知设置状态。这样我就不必在环境中添加额外的 EnvironmentObject
并在每个视图中收听 .onChange(of: someUserInfoInsideTheEnvironment)
,从而复制现有的 .onOpenUrl
处理深层链接。
有没有办法用特定的网址手动(以编程方式)触发
.onOpenUrl
?
就像设置特定的环境值或 -object 以便视图层次结构中的每个视图都将使用我自己的深层链接 url 调用 .onOpenUrl
?
您可以使用
openURL()
,就像使用普通的网页链接一样。我在我的应用程序中使用自定义小部件 url 实现了此功能,它按预期触发了 onOpenURL()
。
导入 openURL:
@Environment(\.openURL) private var openURL
完整详细信息:https://developer.apple.com/documentation/swiftui/environmentvalues/openurl