Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Swisyn/2aec304d6fd601bf397cb201569018d8 to your computer and use it in GitHub Desktop.
Save Swisyn/2aec304d6fd601bf397cb201569018d8 to your computer and use it in GitHub Desktop.
Detect tel, sms, mailto tags in WKWebView
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
let url = navigationAction.request.URL?.absoluteString
let hostAddress = navigationAction.request.URL?.host
// To connnect app store
if hostAddress == "itunes.apple.com" {
if UIApplication.sharedApplication().canOpenURL(navigationAction.request.URL!) {
UIApplication.sharedApplication().openURL(navigationAction.request.URL!)
decisionHandler(.Cancel)
return
}
}
#if DEBUG
print("url = \(url), host = \(hostAddress)")
#endif
let url_elements = url!.componentsSeparatedByString(":")
switch url_elements[0] {
case "tel":
#if DEBUG
print("this is phone number")
#endif
openCustomApp("telprompt://", additional_info: url_elements[1])
decisionHandler(.Cancel)
case "sms":
#if DEBUG
print("this is sms")
#endif
openCustomApp("sms://", additional_info: url_elements[1])
decisionHandler(.Cancel)
case "mailto":
#if DEBUG
print("this is mail")
#endif
openCustomApp("mailto://", additional_info: url_elements[1])
decisionHandler(.Cancel)
default:
#if DEBUG
print("normal http request")
#endif
}
decisionHandler(.Allow)
}
/**
open custom app with urlScheme : telprompt, sms, mailto
- parameter urlScheme: telpromt, sms, mailto
- parameter additional_info: additional info related to urlScheme
*/
func openCustomApp(urlScheme:String, additional_info:String){
if let requestUrl:NSURL = NSURL(string:"\(urlScheme)"+"\(additional_info)") {
let application:UIApplication = UIApplication.sharedApplication()
if application.canOpenURL(requestUrl) {
application.openURL(requestUrl)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment