openURL和canOpenURL之间的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openURL和canOpenURL之间的区别相关的知识,希望对你有一定的参考价值。

我需要在safari浏览器中打开一个链接,但我有疑问,我应该使用哪种方法? openURL/opencanOpenURL。谁能帮我解释一下这两个功能有什么实际区别?

 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之间的区别的主要内容,如果未能解决你的问题,请参考以下文章