【发布时间】:2017-02-28 09:32:22
【问题描述】:
上面的代码总是返回false
if {(UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!))}
我猜这是在 iOS10 中发现的问题。 我正在尝试打开谷歌地图应用程序(如果已安装)或尝试打开苹果地图以便使用 canOpenURL 。有没有其他选择
【问题讨论】:
标签: ios swift ios10 info.plist openurl
上面的代码总是返回false
if {(UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!))}
我猜这是在 iOS10 中发现的问题。 我正在尝试打开谷歌地图应用程序(如果已安装)或尝试打开苹果地图以便使用 canOpenURL 。有没有其他选择
【问题讨论】:
标签: ios swift ios10 info.plist openurl
将此添加到您的 Info.plist,然后尝试调用 canOpenURL。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>comgooglemaps</string>
</array>
【讨论】:
在应用程序的 plist 文件中使用的正确密钥是 LSApplicationQueriesSchemes,而不是 Apple 文档中所述的 UIDefaultLaunchStoryboard。
来自 Apple 的文档:
如果您的应用在 iOS 9.0 或之后链接,您必须声明 URL 您要传递给此方法的方案。通过使用 Xcode 项目的 Info.plist 中的 UIDefaultLaunchStoryboard 数组 文件。对于您希望应用程序使用此方法的每个 URL 方案, 将其作为字符串添加到此数组中。
如果您的(iOS 9.0 或更高版本)应用使用您的方案调用此方法 尚未声明,该方法返回 false,无论是否 设备上安装了适用于该方案的应用程序。
您可以阅读更多关于它的信息here。
【讨论】:
UIDefaultLaunchStoryboard有什么关系?我认为这是文档中的错误。
LSApplicationsQueriesSchemes。我已经更新了我的答案。
LSApplicationsQueriesSchemes,这在 iOS10 上也不起作用。有什么想法吗?
LSApplicationsQueriesSchemes(复数)而是LSApplicationQueriesSchemes。我更新了答案