首页 / 资讯中心 / 文章详情

swiftui-ui-patterns - deeplinks

swiftui-ui-patterns - deeplinks ★ FEATURED ARTICLE
深链接与导航意图将外部 URL 路由到应用内目的地同时在需要时回退到系统处理。核心模式在路由器中集中处理 URLhandle(url:)、handleDeepLink(url:)。注入一个委托给路由器的OpenURLAction处理器。对应用 scheme 链接使用.onOpenURL并在需要时将其转换为 Web URL。让路由器决定是导航还是外部打开。示例路由器入口MainActorfinalclassRouterPath{varpath:[Route][]varurlHandler:((URL)-OpenURLAction.Result)?funchandle(url:URL)-OpenURLAction.Result{ifisInternal(url){navigate(to:.status(id:url.lastPathComponent))return.handled}returnurlHandler?(url)??.systemAction}funchandleDeepLink(url:URL)-OpenURLAction.Result{// Resolve federated URLs, then navigate.navigate(to:.status(id:url.lastPathComponent))return.handled}}示例附加到根视图extensionView{funcwithLinkRouter(_router:RouterPath)-someView{self.environment(\.openURL,OpenURLAction{urlinrouter.handle(url:url)}).onOpenURL{urlinrouter.handleDeepLink(url:url)}}}应保留的设计选择将 URL 解析和决策逻辑保留在路由器内部。避免在多个地方处理深链接一个入口点就足够了。始终为OpenURLAction或UIApplication.shared.open提供回退。陷阱不要假定 URL 是内部的先验证。避免在解析远程链接时阻塞 UI使用Task。
阅读完成 · 觉得有帮助?
咨询建站