我在AppStore上发布了一个应用程序,我希望将其迁移到企业开发人员帐户以进行内部分发。我在企业文档中读到:
如果您希望用户将应用程序的数据保存在其设备上,请确保新版本使用与其替换的相同的捆绑标识符,并告知用户在安装新版本之前不要删除旧版本。如果捆绑标识符匹配,则新版本将替换旧版本并将数据保存在设备上。
现在,假设我们保持已安装的 AppStore二进制文件与使用其他证书签名的企业二进制文件之间的Bundle ID相同... 应该在手机上覆盖相同的应用,而不是创建第二个应用。
我联系了Apple支持,他们说“不,如果您没有指示客户卸载他们的旧应用程序,您将安装2个应用程序”。这是真的吗?
答案 0 :(得分:2)
EDIT2:当我进入我的企业门户并尝试创建一个与现有应用ID具有相同价值但具有不同前缀的应用ID时,它仍然在我身上爆炸并说:
标识符'com.mycompany.myapp'的App ID不可用。 请输入其他字符串。
原文回答: 后一部分是不正确的 - iOS设备使用Bundle Identifier来区分应用程序。我可以在同一个iOS设备上有20个标有“酷应用程序”的应用程序,只要它们具有唯一的包标识符,例如com.mycompany.coolapp.1 - com.mycompany.coolapp.20。同样(我已经意外地完成了这个)如果我打开两个项目,两个项目都有包标识符com.mycompany.myapp,并且在另一个项目之后运行一个项目将在设备上安装最后一个应用程序,而之前的应用程序将被覆盖。
关于应用程序数据维持本身,我没有测试过,虽然我对你发生的事情感兴趣!
答案 1 :(得分:2)
我已设法实现这一目标,因此应用程序的“企业”版本会覆盖“应用商店”分布式版本。
这不使用完全相同的捆绑ID,但确实实现了OP在原始问题中提出的要求。
我是如何做到这一点的,在我的企业帐户中,创建一个通配符包标识符,其前两部分与我们的生产应用程序的包标识符相同,例如:
Production : com.xyz.abc
Enterprise : com.xyz.*
使用此通配符包ID,可以分发应用程序并覆盖通过应用商店安装的任何版本(用户数据仍将保留)。这里的前缀似乎并不重要。
通配符包ID的一个缺点是您无法使用APNS等。