que webview swift safari

mobile safari webview que es



Enlace abierto rĂ¡pido en Safari (9)

Actualmente estoy abriendo el enlace en mi aplicación en un WebView , pero estoy buscando una opción para abrir el enlace en Safari .


ACTUALIZADO para Swift 4: (crédito a Marco Weber)

if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") { UIApplication.shared.openURL(requestUrl as URL) }

O vaya con más estilo rápido usando guard :

guard let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") else { return } UIApplication.shared.openURL(requestUrl as URL)

Swift 3:

Puede verificar NSURL como opcional implícitamente:

if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") { UIApplication.sharedApplication().openURL(requestUrl) }


En Swift 1.2:

@IBAction func openLink { let pth = "http://www.google.com" if let url = NSURL(string: pth){ UIApplication.sharedApplication().openURL(url) }


En Swift 2.0:

UIApplication.sharedApplication().openURL(NSURL(string: "http://.com")!)


IOS 11.2 Swift 3.1-4

let webView = WKWebView() override func viewDidLoad() { super.viewDidLoad() guard let url = URL(string: "https://www.google.com") else { return } webView.frame = view.bounds webView.navigationDelegate = self webView.load(URLRequest(url: url)) webView.autoresizingMask = [.flexibleWidth,.flexibleHeight] view.addSubview(webView) } func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if navigationAction.navigationType == .linkActivated { if let url = navigationAction.request.url, let host = url.host, !host.hasPrefix("www.google.com"), UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url) print(url) print("Redirected to browser. No need to open it locally") decisionHandler(.cancel) } else { print("Open it locally") decisionHandler(.allow) } } else { print("not a user click") decisionHandler(.allow) } }

}


No está "integrado en Swift", pero puede usar métodos UIKit estándar para hacerlo. Eche un vistazo a openUrl() .

Swift 4

guard let url = URL(string: "https://.com") else { return } UIApplication.shared.open(url)

Swift 3

guard let url = URL(string: "https://.com") else { return } UIApplication.shared.openURL(url)

Swift 2.2

guard let url = URL(string: "https://.com") else { return } UIApplication.sharedApplication().openURL(url)


Nuevo con iOS 9 y superior, puede presentar al usuario un SFSafariViewController (consulte la documentación here ). Básicamente, obtienes todos los beneficios de enviar al usuario a Safari sin hacer que abandone tu aplicación. Para usar el nuevo SFSafariViewController solo:

import SafariServices

y en algún lugar de un controlador de eventos, presente al usuario el controlador de vista de safari de esta manera:

let svc = SFSafariViewController(url: url) present(svc, animated: true, completion: nil)

La vista de safari se verá así:


desde iOS 10 deberías usar:

guard let url = URL(string: linkUrlString) else { return } if #available(iOS 10.0, *) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } else { UIApplication.shared.openURL(url) }


Swift 3 y IOS 10.2

UIApplication.shared.open(URL(string: "http://www..com")!, options: [:], completionHandler: nil)

Swift 3 y IOS 10.2