programing

Safari의 Swift Open 링크

showcode 2023. 4. 20. 23:26
반응형

Safari의 Swift Open 링크

현재 앱에서 링크를 열고 있습니다.WebView대신 Safari에서 링크를 여는 옵션을 찾고 있습니다.

"Bak in To Swift"는 아니지만 표준 사양으로 사용할 수 있습니다.UIKit 방법을 가르쳐 주세요.UIApplication(비권장) 및 를 참조해 주세요.

Swift 4 + Swift 5 (iOS 10 이상)

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

Swift 3 (iOS 9 이하)

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

스위프트 2.2

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

iOS 9 이후로는 새로운 기능을 사용자에게 제공할 수 있습니다.SFSafariViewController(여기 매뉴얼 참조).기본적으로 사용자를 Safari로 보내는 모든 이점을 앱에서 내보내지 않고 얻을 수 있습니다.새로운 SFSafariViewController를 사용하려면 다음 절차를 따릅니다.

import SafariServices

이벤트 핸들러의 어딘가에서 사용자에게 다음과 같은 safari 뷰 컨트롤러를 제공합니다.

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

safari 뷰는 다음과 같습니다.

여기에 이미지 설명 입력

Swift 4 갱신: (Marco Weber 크레딧)

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

아니면 좀 더 빠른 스타일로.guard:

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

UIApplication.shared.openURL(requestUrl as URL) 

스위프트 3:

NSURL은 암묵적으로 옵션으로 확인할 수 있습니다.

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

스위프트 5

Swift 5: 체크 방법canOpneURL유효하면 열려 있습니다.

guard let url = URL(string: "https://iosdevcenters.blogspot.com/") else {
     return
}

if UIApplication.shared.canOpenURL(url) {
     UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

Swift 3 및 IOS 10.2

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

Swift 3 및 IOS 10.2

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)
}

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")!)

스위프트 5

if let url = URL(string: "https://www.google.com") {
    UIApplication.shared.open(url)
}

Swift를 사용하는 경우UI:

Link("Stack Overflow", destination: URL(string: "https://www.stackoverflow.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)
    }
}

언급URL : https://stackoverflow.com/questions/25945324/swift-open-link-in-safari

반응형