Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
canOpenURL在ios 10中不工作_Ios_Swift_Ios10_Info.plist_Openurl - Fatal编程技术网

canOpenURL在ios 10中不工作

canOpenURL在ios 10中不工作,ios,swift,ios10,info.plist,openurl,Ios,Swift,Ios10,Info.plist,Openurl,上面的代码总是返回false if {(UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!))} 我想这是iOS10中发现的问题。 我试图打开谷歌地图应用程序,如果有一个安装或试图打开苹果地图,所以想使用canOpenURL。是否有其他选择编辑: 应用程序的plist文件中使用的正确键是lsapplicationqueryschemes,而不是苹果文档中所述的UIDefaultLaunchStoryboard 原始答复

上面的代码总是返回false

if {(UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!))}
我想这是iOS10中发现的问题。 我试图打开谷歌地图应用程序,如果有一个安装或试图打开苹果地图,所以想使用canOpenURL。是否有其他选择

编辑: 应用程序的plist文件中使用的正确键是
lsapplicationqueryschemes
,而不是苹果文档中所述的
UIDefaultLaunchStoryboard

原始答复: 从苹果的文档中:

如果您的应用程序在iOS 9.0上或之后链接,则必须声明URL 要传递到此方法的方案。通过使用 Xcode项目的Info.plist中的UIDefaultLaunchStoryboard数组 文件对于希望应用程序使用此方法的每个URL方案, 将其作为字符串添加到此数组中

如果您的(iOS 9.0或更高版本)应用程序使用您需要的方案调用此方法 如果未声明,则该方法返回false,无论 设备上已安装适用于该方案的应用程序


您可以阅读更多信息。

将此添加到您的Info.plist中,然后尝试调用canOpenURL

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>comgooglemaps</string>
</array>
LSApplicationQueriesSchemes
谷歌地图

这与
UIDefaultLaunchStoryboard
有什么关系?我认为这是文件中的一个错误。嗯,你是对的。我很抱歉在发布之前没有仔细检查,但我真的没想到苹果的文档中会出现这样的错误。正确的键是
LSApplicationsQueriesSchemes
。我已经更新了我的答案。即使在向
LSApplicationsQueriesSchemes
添加方案之后,这在iOS10上也不起作用。有什么想法吗?这里有一个输入错误,它不是
LSApplicationQueriesSchemes
(复数),而是
LSApplicationQueriesSchemes
。我更新了答案谢谢!。另外,苹果的文档似乎已经修复。这是一个多么好的提示,谢谢!如何获得这个值“comgooglemaps”?到今天为止,这个解决方案仍然适用于iOS 12-14