什么是code push

微软提供的开源的react native/cordova 在线热修复服务,使得我们能够在不更新apk/ipa的情况下,更新我们的JS代码。提供更快捷的发版本/修复bug的方式。客户端本身是会链接code push提供的服务器拉取最新的代码。 详细介绍

哪些场景无法使用

  • 原生代码更新了
  • 资源文件更新了,比如字体库
  • 应用权限变更

回滚

code push 每次即将更新一个本地版本的时候,会自动备份当前版本代码,如果本次更新失败,则会自动回退使用备份的那个版本的代码。

配置注意点

  • 全部操作都需要通过cli,包括账号注册,app注册,app发布。
  • 一个app只能对应一个平台,即使这个app发布的时候可以指定平台ios/android。因为code push 的deployment 不区分平台。
  • CodePush deployments do not track, or have any concept of platform (Android/iOS)
  • The release-react command can only release one platform at a time
  • An Android bundle released to an iOS app, or vice versa, will be silently rejected by our SDK

所以需要注册两个app,比如app-ios,app-android这样。问题链接

  • 注意自己使用的react native版本,必须与code push的rn插件匹配,code push的rn插件并不兼容前面的版本。

更新策略

可以通过JS代码开发更新过程的交互体验,默认是后台更新。android平台可以随意定制自己的更新策略。然而走apple store的应用则需要注意不能显示的让用户感知到更新,否则会被平台审核拒绝

更新流程

code-push release-react thrall ios 首先把代码推送到deployment上,然后通过code-push promote thrall-ios Staging Production 把已经推送到deployment上的版本更新到production上,这样才算把代码推送到线上环境。

更新时机

默认是每次app进程启动的时候才检查更新,下载,等待下次进程启动的时候更新本地的JS。
也可以是每次app由后台唤起的时候检查更新,下载,等待下次进程启动的时候更新本地的JS。 当然也可以通过JS代码实现JS重新加载。
具体参考

指定更新的版本

有这种场景,新上线一个版本改了原生的东西,需要重新发ipa/apk,并且我们推送了最新的包,然后旧的用户还没有下载新的ipa/apk,只是拉取JS,JS可能会调用不存在的原生的接口,这样踢来就会crash。 当然这个已经考虑到了,code push的推送包可以指定版本号的。这样我们推送包的时候就可以指定我们最新的ipa/apk上的版本号,那么用户手中旧的版本的app是不会去更新JS的。 具体可以参考targetBinaryVersion

更新过程记录android

app启动,注意code push的log
粘贴图片_156_
通过cli推送更新
粘贴图片_157_
查看更新状况
粘贴图片_158_
客户再次启动或者从后台唤醒(根据自己设定的更新策略)
粘贴图片_159_
应用进程关闭后再次启动应用
粘贴图片_160_
查看更新状况,发现已经有1个终端
粘贴图片_161_

results matching ""

    No results matching ""