【问题标题】:canOpenURL not working in ios 10 [duplicate]canOpenURL在ios 10中不起作用[重复]
【发布时间】:2017-02-28 09:32:22
【问题描述】:

上面的代码总是返回false

if {(UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!))}

我猜这是在 iOS10 中发现的问题。 我正在尝试打开谷歌地图应用程序(如果已安装)或尝试打开苹果地图以便使用 canOpenURL 。有没有其他选择

【问题讨论】:

    标签: ios swift ios10 info.plist openurl


    【解决方案1】:

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

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>comgooglemaps</string>
    </array>
    

    【讨论】:

    • 多么棒的提示,谢谢!
    • 如何得到这个值“comgooglemaps”?
    • 截至今天,此解决方案仍然适用于 iOS 12-14
    【解决方案2】:

    编辑:

    在应用程序的 plist 文件中使用的正确密钥是 LSApplicationQueriesSchemes,而不是 Apple 文档中所述的 UIDefaultLaunchStoryboard

    原答案:

    来自 Apple 的文档:

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

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

    您可以阅读更多关于它的信息here

    【讨论】:

    • 这和UIDefaultLaunchStoryboard有什么关系?我认为这是文档中的错误。
    • 嗯,你是对的。我很抱歉在发布之前没有仔细检查它,但我真的没想到 Apple 在他们的文档中会出现这样的错误。正确的密钥是LSApplicationsQueriesSchemes。我已经更新了我的答案。
    • 即使将方案添加到LSApplicationsQueriesSchemes,这在 iOS10 上也不起作用。有什么想法吗?
    • 有一个错字,不是LSApplicationsQueriesSchemes(复数)而是LSApplicationQueriesSchemes。我更新了答案
    • 谢谢!。此外,Apple 的文档似乎已修复。
    猜你喜欢
    • 2018-01-04
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多