В настоящее время я открываю ссылку в своем приложении в WebView, но я ищу вариант, чтобы открыть ссылку в Safari.
Есть ли простой способ сделать это в Swift?
В настоящее время я открываю ссылку в своем приложении в WebView, но я ищу вариант, чтобы открыть ссылку в Safari.
Есть ли простой способ сделать это в Swift?
Он не "запекается в Swift", но вы можете использовать стандартные методы UIKit
для этого. Посмотрите UIApplication
openUrl()
.
Swift 3
UIApplication.shared.openURL(URL(string: "http://www.stackoverflow.com")!)
Swift 2.2
UIApplication.sharedApplication().openURL(NSURL(string: "http://www.stackoverflow.com")!)
Новый с iOS 9 и выше вы можете представить пользователю SFSafariViewController
(см. документацию здесь). В основном вы получаете все преимущества отправки пользователя в Safari, не оставляя их в стороне от своего приложения. Использовать новый SFSafariViewController просто:
import SafariServices
и где-то в обработчике событий пользователь должен видеть контроллер представления сафари следующим образом:
let svc = SFSafariViewController(url: url)
present(svc, animated: true, completion: nil)
Вид сафари будет выглядеть примерно так:
Вы можете проверить NSURL как необязательно неявно:
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") {
UIApplication.sharedApplication().openURL(requestUrl)
}
Swift 3 и IOS 10.2
UIApplication.shared.open(URL(string: "http://www.stackoverflow.com")!, options: [:], completionHandler: nil)
Swift 3 и IOS 10.2
В Swift 1.2:
@IBAction func openLink {
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)
}
В Swift 2.0:
UIApplication.sharedApplication().openURL(NSURL(string: "http://stackoverflow.com")!)
так как iOS 10 вы должны использовать:
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)
}