适用于iOS应用的具有多个捆绑标识符的URL类型

时间:2018-09-19 08:35:21

标签: ios xcode url-scheme

我希望我的iOS项目能够处理多种URL类型和多个包标识符,因此我可以在同一设备上安装2个版本的应用程序。

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

我正在Info.plist文件中为这两个捆绑包标识符注册2个URL类型

enter image description here

我使用2个包标识符生成2个构建,并将两个应用安装在同一设备上。然后,我尝试使用2个网址访问我的应用程序:myapp:// feed和myapp-test:// feed。

但是,由于某些原因,我无法打开myapp-test,并且当我单击两个链接时,它始终会打开myapp。

我处理此方法的方式肯定存在问题,所以我想知道如何在同一个Xcode项目中使用多个URL方案来管理多个包ID?

谢谢

2 个答案:

答案 0 :(得分:2)

一些调查产生了一些解决方案。

自动

使用 $(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 :(得分:1)

请确保:

1)对于您注册了com.mycompany.myapp架构的mayapp捆绑软件ID的应用,应该没有注册的myapp-test架构;

同一时间

2)对于您注册了com.mycompany.myapp-test架构的myapp-test捆绑软件ID的应用,应该没有myapp架构注册。

如果我正确解决了该问题,则此行为的原因是您的两个应用都已针对这两种方案注册。当您尝试打开某些URL(myapp-test:// ...或myapp:// ...)时,iOS会检测到注册了一个应用,然后首先选择一个应用来处理它。

不需要注册要打开的方案-您需要注册要处理的方案。

希望这会有所帮助。

相关问题