Swift Open Link в Safari

В настоящее время я открываю ссылку в своем приложении в WebView, но я ищу вариант, чтобы открыть ссылку в Safari.

Есть ли простой способ сделать это в Swift?

Ответ 1

Он не "запекается в 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")!)

Ответ 2

Новый с iOS 9 и выше вы можете представить пользователю SFSafariViewController (см. документацию здесь). В основном вы получаете все преимущества отправки пользователя в Safari, не оставляя их в стороне от своего приложения. Использовать новый SFSafariViewController просто:

import SafariServices

и где-то в обработчике событий пользователь должен видеть контроллер представления сафари следующим образом:

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

Вид сафари будет выглядеть примерно так:

введите описание изображения здесь

Ответ 3

Вы можете проверить NSURL как необязательно неявно:

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

Ответ 4

Swift 3 и IOS 10.2

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

Swift 3 и IOS 10.2

Ответ 5

В Swift 1.2:

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

Ответ 6

В Swift 2.0:

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

Ответ 7

так как 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)
    }