Saat ini saya membuka tautan di aplikasi saya di WebView
, tetapi saya mencari opsi untuk membuka tautan di Safari .
Saat ini saya membuka tautan di aplikasi saya di WebView
, tetapi saya mencari opsi untuk membuka tautan di Safari .
Jawaban:
Ini bukan "dipanggang untuk Swift", tetapi Anda dapat menggunakan UIKit
metode standar untuk melakukannya. Lihatlah aplikasi UIA (usang) dan .openUrl(_:)
open(_:options:completionHandler:)
Swift 4 + Swift 5 (iOS 10 dan lebih tinggi)
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.shared.open(url)
Swift 3 (iOS 9 dan di bawah)
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.shared.openURL(url)
Cepat 2.2
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.sharedApplication().openURL(url)
Baru dengan iOS 9 dan lebih tinggi, Anda dapat menyajikannya kepada pengguna SFSafariViewController
(lihat dokumentasi di sini ). Pada dasarnya Anda mendapatkan semua manfaat mengirim pengguna ke Safari tanpa membuat mereka meninggalkan aplikasi Anda. Untuk menggunakan SFSafariViewController baru, cukup:
import SafariServices
dan di suatu tempat di pengendali acara menyajikan pengguna dengan pengendali tampilan safari seperti ini:
let svc = SFSafariViewController(url: url)
present(svc, animated: true, completion: nil)
Tampilan safari akan terlihat seperti ini:
sharedApplication
properti dalam ekstensi aplikasi dilarang. Untuk lebih lanjut: developer.apple.com/library/archive/documentation/General/…
DIPERBARUI untuk Swift 4: (kredit ke Marco Weber)
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") {
UIApplication.shared.openURL(requestUrl as URL)
}
ATAU gunakan gaya swift lainnya menggunakan guard
:
guard let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") else {
return
}
UIApplication.shared.openURL(requestUrl as URL)
Swift 3:
Anda dapat memeriksa NSURL sebagai opsional secara implisit dengan:
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") {
UIApplication.sharedApplication().openURL(requestUrl)
}
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") { UIApplication.shared.openURL(requestUrl as URL) }
Swift 3 & iOS 10.2
UIApplication.shared.open(URL(string: "http://www.stackoverflow.com")!, options: [:], completionHandler: nil)
Swift 3 & iOS 10.2
sejak iOS 10 Anda harus menggunakan:
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)
}
Cepat 5
Swift 5: Periksa canOpneURL
apakah valid maka terbuka.
guard let url = URL(string: "https://iosdevcenters.blogspot.com/") else {
return
}
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Dalam Swift 1.2:
@IBAction func openLink {
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)
}
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)
}
}