1. 程式人生 > >iOS開發 解決WKWebView載入的h5,無法呼叫撥打電話功能

iOS開發 解決WKWebView載入的h5,無法呼叫撥打電話功能

h5的撥打電話程式碼是

<a href="tel:13112345678">移動WEB頁面JS一鍵撥打號碼諮詢功能</a>

UIWebView載入的h5,可以呼叫;但是WKWebView就是不行,找了半天,最後解決,在WKWebView的WKNavigationDelegate代理方法處理,程式碼如下:

// 處理撥打電話以及Url跳轉等等
- (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及其之後,撥打電話系統彈出框延遲出現
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone]];
        });
    }
    decisionHandler(WKNavigationActionPolicyAllow);
}

ps:注意,這個方法也是處理一些Url跳轉的方法,當內部有些Url跳轉需要處理的時候,需要在這個方法內處理