我理解理想情况下的部署模型,即所有用户始终将其应用程序更新到最新的应用商店版本。但实际上他们没有。如何使用 CodePush 处理反应原生 iOS 应用程序的不同构建版本?请考虑以下两种情况:
1)我一直在使用CodePush将新的js bundels部署到我的应用程序的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 上加载最新的捆绑包。
有没有办法干净利落地做到这一点,没有不必要的更新?
我们计划很快优化此方案,因为正如您提到的,我们意识到它的需求是多么普遍。
同时,我们建议支持此功能(以及我们的许多用户当前正在执行的操作)的方式是在与现有 1.0.0 部署相同的 CodePush 应用中为 1.1.0 版本创建新的 CodePush 部署,并在将 1.1.0 提交到应用商店之前更新 Info.plist 文件以指向新的部署密钥。
这样,您就可以向 1.0.0用户和 1.1.0 用户发布更新。如果要将同一更新发布到这两个更新,则必须运行发布命令两次,但如果更新仅针对一个更新,则只需将其发布到相应的部署即可。
这个解决方案对人们来说效果很好,并且有一个"好处",即非常明确地说明您希望如何并行管理多个二进制版本,但它显然也是一种黑客式的,而且比它应该的更冗长/笨拙。
我们将在下个月简化此体验,我很乐意收到你关于我们如何最好地适应你的方案的反馈。如果您有任何其他问题/等,请随时直接给我发电子邮件(joncart@microsoft.com)。
谢谢!