为什么WKWebview打不开App Store链接?

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

我想使用 WKWebview 打开 App Store 链接。
App Store 链接是指来自 App Store 共享功能的链接。
(例如“https://apps.apple.com/kr/app/apple-music/id1108187390”)

我以为WKWebview可以打开链接,因为这个链接是“https”链接,网络浏览器可以打开这个链接。
但它没有用。

不使用 WKWebViewDelegate 拦截到 UIApplication 的

open
方法,
WKWebView打不开App Store链接
这是什么原因?

ios swift webview wkwebview
1个回答
1
投票

App Store 链接使用“itms”或“itms-apps”方案,WKWebView 不支持。这意味着当用户单击 WKWebView 中的 App Store 链接时,默认行为是尝试在同一视图中打开该链接,但 WKWebView 无法识别自定义方案,也不知道如何处理它。

要从 WKWebView 打开 App Store 链接,您需要使用 WKNavigationDelegate 方法 decidePolicyForNavigationAction 拦截链接点击事件,然后使用 UIApplication 的 open 方法和 App Store 链接的 URL 在 App Store 应用程序中打开它。

这是

decidePolicyForNavigationAction
的示例实现:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction,
             decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    guard let url = navigationAction.request.url else {
        decisionHandler(.allow)
        return
    }
    if url.scheme == "itms-apps" || url.scheme == "itms" {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
        decisionHandler(.cancel)
        return
    }
    decisionHandler(.allow)
}

此代码检查导航操作的 URL 是否使用“itms-apps”或“itms”方案,如果是,它会使用

UIApplication.shared.open
方法在 App Store 应用程序中打开链接。如果 URL 使用不同的方案,则允许导航操作在
WKWebView
.

中继续
© www.soinside.com 2019 - 2024. All rights reserved.