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
'programing' 카테고리의 다른 글
VBA에서 두 가지 범위에서 범위를 생성하는 방법은 무엇입니까? (0) | 2023.04.25 |
---|---|
SQL Server의 스키마 바인딩 보기에서 참조하는 열 크기 변경 (0) | 2023.04.20 |
C#을 사용하여 Excel에서 셀 색상 변경 (0) | 2023.04.20 |
ASP 문자열에서 HTML 태그를 삭제하려면 어떻게 해야 합니까?인터넷? (0) | 2023.04.20 |
어떤 iOS 버전이 실행 중인지 프로그래밍 방식으로 감지하려면 어떻게 해야 합니까? (0) | 2023.04.20 |