You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让iOS应用的WKWebView正常打开WhatsApp?按钮失效求助

解决WKWebView中WhatsApp按钮无法唤起的问题

主要原因是WKWebView默认不会自动处理whatsapp://这类自定义URL Scheme,需要手动拦截并处理请求,具体步骤如下:

  • 第一步:配置Info.plist,允许查询WhatsApp Scheme
    在项目的Info.plist中添加LSApplicationQueriesSchemes数组,将whatsapp作为其中一项添加进去。这是iOS系统的强制要求,用来允许当前App查询WhatsApp的Scheme是否可用。

  • 第二步:实现WKNavigationDelegate拦截请求
    给你的WKWebView设置navigationDelegate,然后实现对应的代理方法拦截WhatsApp请求:

    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        guard let url = navigationAction.request.url else {
            decisionHandler(.allow)
            return
        }
        
        // 拦截whatsapp协议的请求
        if url.scheme == "whatsapp" {
            if UIApplication.shared.canOpenURL(url) {
                // 根据iOS版本选择合适的打开方式
                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(url, options: [:], completionHandler: nil)
                } else {
                    UIApplication.shared.openURL(url)
                }
                // 阻止WebView继续加载该请求
                decisionHandler(.cancel)
                return
            }
        }
        // 其他请求正常允许加载
        decisionHandler(.allow)
    }
    
  • 额外检查:网页链接格式
    确认网页中按钮触发的WhatsApp链接是标准格式,比如:
    whatsapp://send?phone=+123456789&text=Hello
    如果是通过JavaScript触发跳转,也要确保代码里调用的是正确的URL,没有被WKWebView的安全策略限制。

内容的提问来源于stack exchange,提问作者Marta Paniti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:31:04