मैं वर्तमान में अपने ऐप में लिंक खोल WebView
रहा हूं, लेकिन मैं इसके बजाय सफारी में लिंक खोलने का विकल्प ढूंढ रहा हूं ।
मैं वर्तमान में अपने ऐप में लिंक खोल WebView
रहा हूं, लेकिन मैं इसके बजाय सफारी में लिंक खोलने का विकल्प ढूंढ रहा हूं ।
जवाबों:
यह "स्विफ्ट में बेक किया हुआ" नहीं है, लेकिन आप इसे करने के लिए मानक UIKit
तरीकों का उपयोग कर सकते हैं । UIApplication's (पदावनत) और पर एक नज़र डालें ।openUrl(_:)
open(_:options:completionHandler:)
स्विफ्ट 4 + स्विफ्ट 5 (iOS 10 और उससे ऊपर)
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.shared.open(url)
स्विफ्ट 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)
आईओएस 9 के साथ नया और उच्चतर आप उपयोगकर्ता को यहां प्रस्तुत कर सकते SFSafariViewController
हैं ( यहां प्रलेखन देखें )। मूल रूप से आपको उपयोगकर्ता को सफारी में भेजने के सभी लाभ मिलते हैं, बिना उन्हें अपना ऐप छोड़ने के। नए SFSafariViewController का उपयोग करने के लिए बस:
import SafariServices
और कहीं न कहीं एक इवेंट हैंडलर यूजर को सफारी व्यू कंट्रोलर के साथ इस तरह पेश करता है:
let svc = SFSafariViewController(url: url)
present(svc, animated: true, completion: nil)
सफारी दृश्य कुछ इस तरह दिखेगा:
sharedApplication
ऐप एक्सटेंशन में संपत्ति तक पहुंचना मना है। और अधिक के लिए: developer.apple.com/library/archive/documentation/General/…
स्विफ्ट 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)
}
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") { UIApplication.shared.openURL(requestUrl as URL) }
स्विफ्ट 3 और आईओएस 10.2
UIApplication.shared.open(URL(string: "http://www.stackoverflow.com")!, options: [:], completionHandler: nil)
स्विफ्ट 3 और आईओएस 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)
}
स्विफ्ट 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)
}
स्विफ्ट 1.2 में:
@IBAction func openLink {
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)
}
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)
}
}