2016-12-06 83 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

如果您需要簡短指南,請在問題中說明問題。 –

相關問題