首页 > 解决方案 > canOpenURL 返回 true 并且应用程序已安装但应用程序未打开

问题描述

当我canOpenURL用来打开通用链接时,(安装了目标应用程序)

canOpenURL返回 true,但应用程序未打开(LSApplicationQueriesSchemes未注册)

但如果我使用open(_ url, options)应用程序正在打开

如果我负责不注册LSApplicationQueriesSchemes,我如何注册 Universal 的链接LSApplicationQueriesSchemes?(https://www.aaa.com

<key>LSApplicationQueriesSchemes</key>
<array>
<string>https://www.aaa.com</string>
</array>

像这样?

标签: iosswiftios-universal-linkscustom-scheme-url

解决方案


如果 AAA 是您尝试打开的应用程序,还有另一种方法可以从您的应用程序内部启动它。您将需要获取CFBundleURLSchemes目标应用程序使用的。
对于 AAA 来说,它是“aaamobile” 对于 AAA 汽车俱乐部来说,它是“aaamobileace”

然后,您需要将 url 方案添加到您的 plist 中:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>aaamobile</string>
</array>

然后在您的代码中,您可以检查应用程序是否已安装并启动应用程序或将用户带到网站:

    guard let url = URL(string: "aaamobile://") else { return }
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.open(URL(string: "https://www.aaa.com")!, options: [:], completionHandler: nil)
    }

推荐阅读