簡體   English   中英

用於 iOS 應用的具有多個捆綁標識符的 URL 類型

[英]URL types with multiple bundle identifier for iOS app

我希望我的 iOS 項目能夠處理多個 URL 類型和多個包標識符,因此我可以在同一設備上安裝 2 個版本的應用程序。

我有 2 個不同的捆綁包 ID:com.mycompany.myapp 和 com.mycompany.myapp-test

我在 Info.plist 文件中為兩個包標識符注冊了 2 個 URL 類型

我使用 2 個捆綁標識符生成 2 個構建,並將兩個應用程序安裝在同一設備上。 然后我嘗試使用 2 個網址訪問我的應用程序:myapp:\/\/feed 和 myapp-test:\/\/feed。

但是由於某種原因,我無法打開 myapp-test 並且當我單擊兩個鏈接時它總是會打開 myapp。

我處理這個問題的方式肯定有問題,所以我想知道如何在同一個 Xcode 項目中使用多個 URL 方案管理多個包 ID?

謝謝

一些調查產生了一些解決方案。

自動的

使用$(PRODUCT_BUNDLE_IDENTIFIER)作為標識符和方案,然后使用像com.mycompany.myapp://這樣的 URL 打開每個應用程序。 無論您擁有多少目標、方案或構建設置,這都將始終有效。

半自動

設置用戶定義的變量。 您需要將這些變量放在info.plist文件中以便引用它們。 這種方法更靈活,但您必須手動編寫方案名稱(僅一次)。 實際上這是我在應用程序中選擇的方式。

用手

這與其說是一個合適的解決方案,不如說是一種變通方法,但 100% 在所有情況下都有效:在構建每個包之前設置標識符和方案。

例如,如果您有像com.mycompany.myapp/myappcom.mycompany.myapp-test/myapp-test這樣的標識符/方案對,則執行以下操作:

  1. 設置標識符com.mycompany.myapp和方案myapp然后構建應用程序包myapp
  2. 設置標識符com.mycompany.myapp-test和方案myapp-test然后構建應用程序包myapp-test

通過這種方式,您應該能夠打開調用相關方案的每個包。 盡管您需要在每次構建之前更改 URL 類型。 就我個人而言,我永遠不會這樣做。

確保:

1) 對於com.mycompany.myapp bundle ID 的應用程序,您注冊了mayapp架構,應該沒有注冊myapp-test架構;

同時,

2) 對於具有com.mycompany.myapp-test捆綁 ID 的應用程序,您注冊了myapp-test架構,應該沒有注冊myapp架構。

如果我正確地解決了問題,則出現這種行為的原因是您的應用程序都為這兩種方案注冊了。 當您嘗試打開某個 URL(myapp-test://... 或 myapp://...)時,iOS 檢測到注冊的應用程序不止一個,並選擇第一個來處理它。

不需要注冊您打算打開的方案 - 您需要注冊您要處理的方案。

希望這可以幫助。

我為每個環境創建了配置文件,然后在那里創建了標識符和模式變量,然后在 url 標識符中使用它們,並且方案就像一個魅力。

使用配置文件配置 env 的好教程<\/a>

我做了什么(在 Xcode 12 中),部分基於來自@clamiax 的輸入

目標 -> 你的應用程序 -> 構建設置 -> + -> 添加用戶定義的設置 ->

設置: URL_SCHEME<\/code>

值:用於不同方案的yourapp-debug<\/code> 、 yourapp<\/code> 、 yourapp-test<\/code>等。

目標 -> 您的應用程序 -> 信息 -> URL 類型

URL 方案: $(URL_SCHEME)<\/code>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM