如何让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
相关产品推荐
相关产品推荐

