আমি বর্তমানে আমার অ্যাপ্লিকেশনটিতে লিঙ্কটি খুলছি WebView, তবে আমি পরিবর্তে সাফারিতে লিঙ্কটি খোলার জন্য একটি বিকল্প খুঁজছি ।
আমি বর্তমানে আমার অ্যাপ্লিকেশনটিতে লিঙ্কটি খুলছি WebView, তবে আমি পরিবর্তে সাফারিতে লিঙ্কটি খোলার জন্য একটি বিকল্প খুঁজছি ।
উত্তর:
এটি "বেকড ইন সুইফ্ট" নয়, তবে আপনি UIKitএটি করার জন্য মানক পদ্ধতি ব্যবহার করতে পারেন । ইউআইএপ্লিকেশন এর ( অবচয় ) এবং দেখুনopenUrl(_:) open(_:options:completionHandler:) ।
সুইফট 4 + সুইফট 5 (আইওএস 10 এবং উপরে)
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.shared.open(url)
সুইফট 3 (আইওএস 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( এখানে ডকুমেন্টেশন দেখুন )। মূলত আপনি ব্যবহারকারীকে আপনার অ্যাপটি ছেড়ে না দিয়েই সাফারিতে প্রেরণের সমস্ত সুবিধা পান। নতুন এসএফএসফারিভিউ কনট্রোলারটি কেবলমাত্র ব্যবহার করতে:
import SafariServices
এবং কোনও ইভেন্টের হ্যান্ডলারটিতে কোথাও সাফারি ভিউ কন্ট্রোলারের সাথে ব্যবহারকারীকে এইভাবে উপস্থাপন করুন:
let svc = SFSafariViewController(url: url)
present(svc, animated: true, completion: nil)
সাফারি ভিউতে এরকম কিছু দেখাবে:
sharedApplicationঅ্যাপ্লিকেশন এক্সটেনশনে সম্পত্তি অ্যাক্সেস নিষিদ্ধ। আরও তথ্যের জন্য: বিকাশকারী.অ্যাপল.
সুইফট 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:
আপনি এনএসআরএলকে নিখুঁতভাবে alচ্ছিক হিসাবে এটি পরীক্ষা করতে পারেন:
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
আইওএস 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)
}
আইওএস 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)
}
}