[英]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/myapp
和com.mycompany.myapp-test/myapp-test
這樣的標識符/方案對,則執行以下操作:
com.mycompany.myapp
和方案myapp
然后構建應用程序包myapp
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 檢測到注冊的應用程序不止一個,並選擇第一個來處理它。
不需要注冊您打算打開的方案 - 您需要注冊您要處理的方案。
希望這可以幫助。
我做了什么(在 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.