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之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
作为UIApplication单例对象的方法 openURL方法的变化
使用 canOpenURL 来检测是不是安装了被指定的 APP
将 Api 的 openURL 与 iPad 中的模式 tel 错误链接
适配iOS9时候,qq和微信第三方登陆一直失败-canOpenURL: failed for URL:
iOS9 白名单问题 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to que