有兩種方法氛驮,
第一種:
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
//打印攜帶電話的URL
NSLog(@"URL: %@", webView.URL);
NSString *strURL = [webView.URL.absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSArray * array = [strURL componentsSeparatedByString:@"http://"];
if ([[strURL substringWithRange:NSMakeRange(0, 3)] isEqualToString:@"tel"]) {
NSMutableString* str=[[NSMutableString alloc] initWithFormat:@"%@", [NSString stringWithFormat:@"telprompt://%@",array[1]]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
}
}
有時候上面的這種方法可能會出現(xiàn)一些不確定的問題示血,導(dǎo)致有可能吊不起打電話的功能匙瘪,
第二種:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSURL *URL = navigationAction.request.URL;
NSString *scheme = [URL scheme];
if ([scheme isEqualToString:@"tel"]) {
NSString *resourceSpecifier = [URL resourceSpecifier];
NSString *callPhone = [NSString stringWithFormat:@"telprompt:%@", resourceSpecifier];
/// 防止iOS 10及其之后桩皿,撥打電話系統(tǒng)彈出框延遲出現(xiàn)
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone]];
});
}
decisionHandler(WKNavigationActionPolicyAllow);
}