我希望我的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?
谢谢
答案 0 :(得分:2)
一些调查产生了一些解决方案。
使用 $(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 :(得分:1)
请确保:
1)对于您注册了com.mycompany.myapp
架构的mayapp
捆绑软件ID的应用,应该没有注册的myapp-test
架构;
同一时间
2)对于您注册了com.mycompany.myapp-test
架构的myapp-test
捆绑软件ID的应用,应该没有myapp
架构注册。
如果我正确解决了该问题,则此行为的原因是您的两个应用都已针对这两种方案注册。当您尝试打开某些URL(myapp-test:// ...或myapp:// ...)时,iOS会检测到注册了一个应用,然后首先选择一个应用来处理它。
不需要注册要打开的方案-您需要注册要处理的方案。
希望这会有所帮助。