반응형
Safari에서 Swift Open Link
현재 내 앱에서 링크를 여는 WebView
중이지만 Safari 에서 링크를 여는 옵션을 찾고 있습니다.
"Swift에 구워진"것은 아니지만 표준 UIKit
방법을 사용 하여 수행 할 수 있습니다. 한 번 봐 가지고 UIApplication
'들openUrl()
.
스위프트 4
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.shared.open(url)
스위프트 3
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
이벤트 핸들러 어딘가에 사용자에게 다음과 같이 사파리 뷰 컨트롤러를 제공하십시오.
let svc = SFSafariViewController(url: url)
present(svc, animated: true, completion: nil)
사파리보기는 다음과 같습니다.
스위프트 4 업데이트 : (마르코 베버에게 신용)
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)
}
스위프트 3 & IOS 10.2
UIApplication.shared.open(URL(string: "http://www.stackoverflow.com")!, options: [:], completionHandler: nil)
스위프트 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)
}
스위프트 1.2에서 :
@IBAction func openLink {
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)
}
스위프트 2.0에서 :
UIApplication.sharedApplication().openURL(NSURL(string: "http://stackoverflow.com")!)
스위프트 5
스위프트 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)
}
iOS 11.2 스위프트 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
반응형
'development' 카테고리의 다른 글
Angular-CLI를 사용하여 특정 모듈에 컴포넌트 작성 (0) | 2020.07.11 |
---|---|
TypeScript 파일이 변경 될 때 TS 노드를보고 다시로드하는 방법 (0) | 2020.07.11 |
has_and_belongs_to_many 조인 테이블의 레일 마이그레이션 (0) | 2020.07.11 |
숫자가 아닌 문자열을 빈 문자열로 교체 (0) | 2020.07.11 |
div에서 모든 자식 DOM 요소를 제거하십시오. (0) | 2020.07.11 |