這兩個的解決思路都是要在下面這個方法中先攔截相應的url,再單獨處理
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
支付寶攔截到的url樣式如下:
支付寶:alipay://alipayclient/?{"dataString":"h5_route_token="bf7ace48916875f26c94fba6f62226ef"&is_h5_route="true"","requestType":"SafePay","fromAppUrlScheme":"alipays"}
微信:weixin://wap/pay...
具體代碼如下:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
NSURL *URL = navigationAction.request.URL;
NSString * urlStr = [[URL absoluteString] stringByRemovingPercentEncoding];
if ([urlStr containsString:@"weixin://wap/pay"] || [urlStr containsString:@"alipay://alipayclient"]) {
[[UIApplication sharedApplication] openURL:navigationAction.request.URL];
decisionHandler(WKNavigationActionPolicyCancel);
}
else{
// 在發送請求之前,決定是否跳轉
decisionHandler(WKNavigationActionPolicyAllow);
}
}