在 SwiftUI 应用程序中以编程方式触发具有特定 url 的 onOpenUrl

问题描述 投票:0回答:1

情况

我有一个具有深度链接支持的 SwiftUI 应用程序。当

.onOpenUrl
被触发时,应用程序将导航到特定屏幕。每个视图都可以监听该深层链接 url,因此拥有正确设置相关状态的所有信息(例如选择特定选项卡的
TabView
)。 我对小部件使用深层链接。

现在我的应用程序支持推送通知,我想使用深度链接导航处理来根据来自

根据 UIApplicationDelegate 方法
的推送通知 userInfo 打开特定屏幕。

想法

这个想法是从该用户信息生成一个深层链接 url 并将其传递到视图层次结构中,以便每个视图都可以对

.onOpenUrl
做出反应并根据打开的推送通知设置状态。这样我就不必在环境中添加额外的
EnvironmentObject
并在每个视图中收听
.onChange(of: someUserInfoInsideTheEnvironment)
,从而复制现有的
.onOpenUrl
处理深层链接。

问题

有没有办法用特定的网址手动(以编程方式)触发

.onOpenUrl
? 就像设置特定的环境值或 -object 以便视图层次结构中的每个视图都将使用我自己的深层链接 url 调用
.onOpenUrl

ios swiftui apple-push-notifications deep-linking uiapplicationdelegate
1个回答
0
投票

您可以使用

openURL()
,就像使用普通的网页链接一样。我在我的应用程序中使用自定义小部件 url 实现了此功能,它按预期触发了
onOpenURL()

导入 openURL:

@Environment(\.openURL) private var openURL

完整详细信息:https://developer.apple.com/documentation/swiftui/environmentvalues/openurl

© www.soinside.com 2019 - 2024. All rights reserved.