繁体   English   中英

如何使用Swift从WebKit iOS应用中的tel:url链接打开电话

[英]How do I open phone from tel: url link from WebKit iOS app using Swift

我正在创建一个iPhone应用程序,部分使用WebKit在该应用程序中显示网页。 当前,当我单击网站上显示的按钮时,它应该打开电话应用程序(带有tel:链接)并拨打号码。 不幸的是,在应用程序中,它什么也没做,但是,它在chrome / safari中工作正常。

我曾尝试搜索互联网并尝试了一些建议,但到目前为止,似乎什么也没做。

import UIKit
import WebKit

class ShopViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {

    @IBOutlet weak var backButton: UIBarButtonItem!
    @IBOutlet weak var shopWebKit: WKWebView!
    override func viewDidLoad() {
        super.viewDidLoad()

        shopWebKit.navigationDelegate = self
        shopWebKit.uiDelegate = self

        // Do any additional setup after loading the view.
    }
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear( animated )

        let urlString:String = "https://www.somewebsite.com"
        let url:URL = URL(string: urlString)!
        let urlRequest:URLRequest = URLRequest(url: url)
        shopWebKit.load(urlRequest)

    }

    @IBAction func backButtonTapped(_ sender: Any) {
        if shopWebKit.canGoBack{
            shopWebKit.goBack()
        }
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        backButton.isEnabled = webView.canGoBack
    }

    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        if navigationAction.targetFrame == nil {
            webView.load(navigationAction.request)

        }
        return nil
    }
}

我希望能够单击WebKit中加载的任何tel:链接按钮,并使其打开电话应用程序并拨打电话号码。 请帮忙。

尝试下面的代码,它可以正常工作swift5。 首先将“ navigationDelegate”添加到您的WKWebView。

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {

    switch navigationAction.request.url?.scheme {
    case "tel":
        UIApplication.shared.open(navigationAction.request.url!, options: [:], completionHandler: nil)
        decisionHandler(.cancel)
        break
    default:
        decisionHandler(.allow)
        break
    }
}

注意:尝试使用实际设备进行测试。

这只是打开电话应用程序并拨打电话的代码。 可能可以帮助你。

if let url = URL(string: "tel:+100000000"), UIApplication.shared.canOpenURL(url) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM