7

我了解理想情况下的部署模型,即所有用户总是将他们的应用程序更新到最新的应用程序商店版本。但实际上他们没有。如何使用 CodePush 处理不同构建版本的 react-native iOS 应用程序?考虑以下两种情况:

1) 我一直在使用 CodePush 将新的 js 捆绑包部署到我的应用程序的 1.0.0 版本。现在我发布 1.1.0 并希望通过 CodePush 提供新代码。据我所知,现在有一种方法可以同时部署到 1.0.0 和 1.1.0,既不是不同的捆绑包,也不是同一个捆绑包。因此,一旦我将捆绑包推送到 1.1.0,就无法更新未通过应用商店更新的 1.0.0 应用。

2) 据我所知,解决此问题的一种方法是仅发布具有增加的内部版本号 (CFBundleVersion) 但未更改版本字符串 (CFBundleShortVersionString) 的新版本。但这有这样的效果,即使是新下载的最新应用商店版本(例如 1.1.0(8))也总是会首先在 codepush 上加载最新的捆绑包。

有没有办法干净地做到这一点并且没有不必要的更新?

4

1 回答 1

7

我们计划很快优化这个场景,因为正如你提到的,我们意识到它的需求是多么普遍。

同时,我们建议支持这一点的方式(以及我们的许多用户目前正在做的事情)是在与现有 1.0.0 部署相同的 CodePush 应用程序中为您的 1.1.0 版本创建一个新的 CodePush 部署,并且在将 1.1.0 提交到商店之前,更新您的 Info.plist 文件以指向新的部署密钥。

这样,您可以向 1.0.0 用户和 1.1.0 用户发布更新。如果您想向两者发布相同的更新,则必须运行两次发布命令,但如果您的更新仅针对一个,您只需将其发布到相应的部署即可。

这个解决方案对人们来说效果很好,并且“好处”是非常明确地说明了您希望如何并行管理多个二进制版本,但它显然也有点像 hack-ish,而且比它应该的更冗长/笨拙是。

我们将在下个月简化这种体验,我很想得到您关于我们如何最好地适应您的场景的反馈。如果您有任何其他问题/等,请随时直接给我发送电子邮件 (joncart@microsoft.com)。

谢谢!

于 2016-01-19T07:18:19.897 回答