2016-12-06 116 views
-1

我无法找到关于如何从当前自定义应用程序中打开另一个自定义应用程序的清晰准确指南。从另一个应用程序中打开应用程序 - “此应用程序不允许查询方案”

我不断收到此错误:

This app is not allowed to query for scheme myScheme.

+0

这与Scheme编程语言有什么关系? – Sylwester

+0

它与Swift 3中的URL方案有关。我已经稍微修改了标签。 – Krivvenz

+0

你是否在寻找类似以下内容的东西:Universal Links https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html – zombie

回答

1

我设法通过执行以下操作这方面的工作:

在下面的例子中,主应用程序是主要的应用程序,我想点击一个按钮并打开另一个应用。这个例子中的另一个应用叫做app2。

这两个应用程序必须属于相同的方案,以防止上述“不允许”的错误。

在下面的示例中,该方案称为myapps,但可以将其设置为“信息”选项卡中的任何内容(如下所述)。

在APP 2:

  1. 点击您的应用目标(以下具体目标左侧,然后点击应用名称的层级结构中点击应用名称)。

  2. 单击信息选项卡并向下滚动到URL类型。

  3. 单击箭头展开URL类型,单击+添加新条目。

  4. 输入标识符字段的唯一标识符(我只用于该应用......如com.mycompany.app2。

  5. 在URL方案领域的软件包ID,你的URL输入一个名称Scheme。在这个例子中,我们将它称为myapps,所以我们将myapps输入到字段中,这个方案名称需要在主应用程序中设置,对于要打开的每个附加应用程序,您需要设置不同的方案名称,然后添加方案名称到主应用程序

在主应用程序中:

  1. 重复步骤1到5 - 唯一的更改将是第4步,因为唯一标识符将会不同,第5步如果您要设置多个应用程序。

  2. 设置一个按钮。

  3. 按钮连接到一个动作像如下:

    @IBAction func pressOpenAnotherApp(_ sender: Any) { 
        openApp(appURL: "myapps://com.companyname.app2" 
    } 
    
  4. 设置的openApp功能:

    func openApp(appURL: String) { 
        let openApp = URL(string: appURL)! 
    
        if UIApplication.shared.canOpenURL(appURL) { 
         UIApplication.shared.open(appURL, options: [:], completionHandler: { (success) in 
          print("Open App: \(appURL)") 
          print("Status: \(success)") 
         }) 
         } 
    } 
    

这个工作对我来说,虽然信息只是通过我自己的试验和错误,所以它可能不是100%准确的,但它的工作原理!

0

在尝试实际打开URL之前,您是否使用canOpenURL? (如果没有安装第二个应用程序,您应该使用它。)The documentation goes into plenty of detail,关于在您的Info.plist中包含LSApplicationQueriesSchemes的要求。

+0

从我所了解的仅适用于iOS 9和更旧版本。该文档告诉你什么关于添加URL类型。这不是一个完整的指南..它告诉你一个更大的难题的一小块。我想要一个关于如何从另一个应用程序轻松打开1个应用程序的简短指南,我已经记录了如何在下面执行此操作。 – Krivvenz

+0

重读:这是针对iOS 9 *及更高版本的*。您的问题表明某个特定错误存在问题,并且此文档说明了如何避免该错误 –

+0

如果您需要简短指南,请在问题中说明问题。 –

相关问题