Ios canOpenURL返回true,应用程序已安装,但应用程序未打开

Ios canOpenURL返回true,应用程序已安装,但应用程序未打开,ios,swift,ios-universal-links,custom-scheme-url,Ios,Swift,Ios Universal Links,Custom Scheme Url,当我使用canOpenURL打开通用链接时,(目标应用程序已安装) canOpenURL返回true,但应用程序未打开(lsapplicationqueryschemes未注册) 但如果我使用open(\url,options)app正在打开 如果我负责不注册lsapplicationqueryschemes,我如何注册Universal指向lsapplicationqueryschemes的链接?() LSApplicationQueriesSchemes https://www.aaa.co

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

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

但如果我使用
open(\url,options)
app正在打开

如果我负责不注册
lsapplicationqueryschemes
,我如何注册Universal指向
lsapplicationqueryschemes
的链接?()

LSApplicationQueriesSchemes
https://www.aaa.com

像这样吗?

如果AAA是您试图打开的应用程序,那么有另一种方法可以从应用程序内部启动它。您需要获取目标应用程序使用的
CFBundleURLSchemes

AAA的“aaamobile” AAA汽车俱乐部的“aaamobileace”

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

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

你是@CZ54的主人吗?不,我不是。但是客户端给了我们通用链接要使通用墨水工作,你需要在服务器上放一个文件。如果您不是所有者,它将不起作用,但open(:,options)可以打开该链接当然,您可以打开任何格式良好的url。并不意味着你的应用程序会打开它。这意味着iOS知道一种打开它的方法(另一个应用程序、safari等)我们如何找到这些应用程序使用的
CbundleurlSchemes
。@lavta3我有一个越狱设备,可以用于测试目的,因此如果这些值存在,提取它们非常简单。如果您没有JB设备,您仍然可以通过下载.ipa文件并提取内容来查找相同的信息。我不想链接到任何教程,因为它们可能会改变,但一个简单的谷歌搜索应该会产生正确的结果。
<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)
    }