7

我在 AppStore 上发布了一个应用程序,我想将其迁移到企业开发人员帐户以进行内部分发。我在企业文档中读到:

如果您希望用户将应用程序的数据保存在他们的设备上,请确保新版本使用与要替换的相同的捆绑标识符,并告诉用户在安装新版本之前不要删除旧版本。如果捆绑标识符匹配,新版本将替换旧版本并将数据存储在设备上。

现在,假设我们在已安装的AppStore 二进制文件和使用不同证书签名的企业二进制文件之间保持 Bundle ID 相同……它应该覆盖他们手机上的同一个应用程序,而不是创建第二个应用程序。

我联系了 Apple 支持,他们说“不,如果您不指示客户卸载他们的旧应用程序,您将安装 2 个应用程序”。这是真的?

4

2 回答 2

2

编辑:为了对话,我将在下面留下我的原始答案,因为下面有很好的对话。正如@mja 在您最初创建应用程序 ID 时指出的那样,它与开发人员门户的几个可用前缀之一相关联,iOS 可以使用该前缀来关联和区分应用程序。

EDIT2:当我进入我的企业门户并尝试创建一个与现有应用程序 ID 具有相同值但具有不同前缀的应用程序 ID 时,它仍然在我身上炸毁并说:

标识符为“com.mycompany.myapp”的应用 ID 不可用。请输入不同的字符串。

原始答案:后一部分不正确 - iOS 设备使用 Bundle Identifier 来区分应用程序。我可以在同一台 iOS 设备上拥有 20 个标记为“酷应用”的应用,只要它们具有唯一的捆绑标识符,例如 com.mycompany.coolapp.1 - com.mycompany.coolapp.20。同样(我不小心这样做了),如果我打开两个项目,这两个项目都有捆绑标识符 com.mycompany.myapp,并在另一个之后运行一个,最后一个要运行的应用程序将安装在设备上,而前一个应用程序将被覆盖。

关于维持自身的应用程序数据我还没有测试过,虽然我会对你发生的事情感兴趣!

于 2013-07-17T20:36:45.327 回答
2

我已经设法实现了这一点,因此应用程序的“企业”构建覆盖了“应用商店”分布式版本。

这不使用完全相同的捆绑 ID,但确实实现了 OP 在他最初的问题中提出的问题。

我是如何做到这一点的,在我的企业帐户中,创建一个通配符包标识符,前两部分与我们的生产应用程序的包标识符相同,例如:

Production : com.xyz.abc
Enterprise : com.xyz.*

使用此通配符捆绑 ID,可以分发应用程序并将覆盖通过应用程序商店安装的任何版本(用户数据仍将保留)。前缀在这里似乎无关紧要。

通配符捆绑 ID 的一个缺点是您不能使用 APNS 等。

于 2014-08-07T09:46:39.710 回答