SuperAPI AI 工具集

swiftui-webkit

前端与建站

查看项目

更新于 10-15 23:34

技能介绍

用途:在 SwiftUI 应用中嵌入并管理网页内容,基于 iOS 26、iPadOS 26、macOS 26、visionOS 26 引入的原生 WebKit-for-SwiftUI API。适用于需要集成网页界面、应用自有 HTML、JavaScript 页面交互或自定义导航策略的场景。

主要能力与用法: 容器选择。应用自有网页内容用 WebView + WebPage;简单外部站点展示可用 SFSafariViewController;OAuth 或第三方登录必须用 ASWebAuthenticationSession,不要用内嵌 WebView;需向下兼容 iOS 26 以下或用旧版 WebKit 功能时回退 WKWebView。 显示内容。仅需渲染 URL 可用 WebView(url:)。需直接加载请求、观察状态、调用 JS 或定制导航时,创建 WebPage(@MainActor 可观察类型),通过 WebView(page) 展示。 加载与观察。WebPage 提供 load(URLRequest)、load(URL)、load(html:baseURL:)、load(:mimeType:characterEncoding:baseURL:) 等入口,以及 title、url、isLoading、estimatedProgress、currentNavigationEvent、backForwardList 等可观察属性,还可通过 page.navigations 观察每次导航事件。 导航策略。实现 WebPage.NavigationDeciding,在 decidePolicy 中按请求或响应决定允许、取消或修改导航,常用于保留自有域、外链交由 openURL、拦截回调 URL。 JavaScript。用 callJavaScript(:arguments:in:contentWorld:) 执行脚本,可通过 arguments 传值并防御式转换为具体 Swift 类型。注意:该 API 未见 WKScriptMessageHandler 的直接替代,JS 到原生的粗粒度通信需借助自定义导航或回调 URL 的变通方式。 本地内容与自定义 Scheme。通过 WebPage.Configuration 配置 URLSchemeHandler,用于打包 HTML、离线资源和应用自有资源;普通远程内容应优先用 HTTPS。 定制与限制。可用 webViewBackForwardNavigationGestures、findNavigator、webViewScrollPosition 等修饰符,按需启用前进后退、页内查找与滚动同步。WebPage 是主 actor 隔离。常见错误包括默认用 WKWebView 包装、用内嵌 WebView 做 OAuth、把 callJavaScript 当作 WKScriptMessageHandler 替代、以及把 WebView 做成通用浏览器。