openURL和canOpenURL之间的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openURL和canOpenURL之间的区别相关的知识,希望对你有一定的参考价值。
我需要在safari浏览器中打开一个链接,但我有疑问,我应该使用哪种方法? openURL/open
或canOpenURL
。谁能帮我解释一下这两个功能有什么实际区别?
if #available(ios 10.0, *)
UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)
UIApplication.shared.canOpenURL(URL(string: urlStr)!)
else
UIApplication.shared.openURL(URL(string: urlStr)!) //introduced: 2.0, deprecated: 10.0,
UIApplication.shared.canOpenURL(URL(string: urlStr)!) // available(iOS 3.0, *)
答案
canOpenURL(_ :)
返回一个布尔值,指示URL的方案是否可以由设备上安装的某个应用程序处理。
的OpenURL(_ :)
尝试在指定的URL处打开资源。
openURL(_:)
不推荐 - iOS 10.0
请改用open(_:options:completionHandler:)
方法。例:
if UIApplication.shared.canOpenURL(url)
if #available(iOS 10.0, *)
UIApplication.shared.open(url, options: [:], completionHandler: (success) in
)
else
UIApplication.shared.openURL(url)
另一答案
canOpenURL:返回bool,url是否可以打开。
例:
func schemeAvailable(scheme: String) -> Bool
if let url = URL(string: scheme)
return UIApplication.shared.canOpenURL(url)
return false
openURL:打开网址。
因为它从ios 10弃用。所以新的功能是openURL:options:completionHandler:
例
func open(scheme: String)
if let url = URL(string: scheme)
UIApplication.shared.open(url, options: [:], completionHandler:
(success) in
print("Open \(scheme): \(success)")
)
以上是关于openURL和canOpenURL之间的区别的主要内容,如果未能解决你的问题,请参考以下文章