这两个的解决思路都是要在下面这个方法中先拦截相应的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);
}
}
网友评论