——站在巨人的肩膀上
react-native-code-push热更新
code-push账号
- 1.安装Code-Push的命令行工具:
npm install -g code-push-cli
- 2.注册
code-push register
- 3.若已经注册过,则直接登录
code-push login
运行之后,会在浏览器中打开一个返回token的页面
复制token值到控制台登录
- 4.创建应用
code-push app add <Your APP Name> <OS(ios/anroid/windows/macOS)> <platform(Objective-C / Swift/react-native/cordova/xamarin)>
如:
code-push app add MyApp ios react-native
也可以到code-push 后台管理:https://appcenter.ms/apps/create进行创建,
如下图:
- 5.查看所有应用
code-push app ls //code-push app list
- 6.查看你的deployment key
code-push deployment ls Delivery -k
如下图:
7.在Xcode中填写你的key
- 8.添加测试
code-push deployment add Delivery Test
使用react-native-code-push
- 1.安装
npm i react-native-code-push --save react-native link react-native-code-push
注意:需要根据当前项目的react-native版本,指定特定版本,不指定则默认安装最新版,
具体可参考官方说明文档react-native-code-push
运行react-native link react-native-code-push 正常情况会引入相关的库,如下图:
若没有配置成功,可手动导入库
- 2.引入
import codePush from "react-native-code-push";
- 3.组件中使用
App = codePush(App); // Wrap Your Component codePush.checkForUpdate('Your Deployment Key').then((update)=>{ // codePush.checkForUpdate().then((update)=>{ console.log('update is ',update); if(!update){ Alert.alert("提示","已是最新版本--",[ {text:"Ok", onPress:()=>{ console.log("点了OK"); }} ]); } else{ codePush.sync({ deploymentKey: 'Your Deployment Key', updateDialog: { optionalIgnoreButtonLabel: '稍后', optionalInstallButtonLabel: '后台更新', optionalUpdateMessage: '有新版本了,是否更新?', title: '更新提示' }, installMode: codePush.InstallMode.IMMEDIATE }); } });
注意,若使用react-native-navigation组件需要在screen注册时,
用codePush包裹你的screen,
不然就会出现很恶心、很恶心的问题——APP更新成功,重启之后又回滚了,,,
回滚了,,,
回滚了,,,
真是心中一万只草泥马奔腾而过啊~~~
具体如下:
Navigation.registerComponent('AboutUS', () => codePush(AboutUS));
- 4.打包release
react-native bundle --entry-file index.ios.js --platform ios --dev false --bundle-output ios/ios.jsbundle
- 5.发布到code-push Staging
code-push release-react MyAPP ios
- 6.从Staging发布到正式环境
code-push promote Delivery Staging Production
或者直接发布到正式环境
code-push release-react MyAPP ios -d Production
注意IOS是根据info中的版本号来决定是否更新,版本独立不影响的位数是三位
即iOS版本都是独立不影响,version=X.Y.Z,当codepush发布更新时,只会影响与其X.Y.Z三位数完全相同的版本,其他版本不会受影响。
- 7.查看历史发布版本
code-push deployment history MyAPP Staging
虽然花了一下午时间来实现,又花了一个多小时整理了下,整个过程,除了独立版本三位数和版本回滚问题,没遇到比较大的坑。
总之,还是那句话——好事多磨~~~
——喂,喂,兄弟,你别吃我泡面啊~
参考链接:
http://blog.csdn.net/zhuangchuming/article/details/63681774
http://blog.csdn.net/sinat_17775997/article/details/69364463
http://www.zhimengzhe.com/IOSkaifa/239118.html
https://github.com/Microsoft/react-native-code-push/issues/1088
https://github.com/Microsoft/react-native-code-push
http://microsoft.github.io/code-push/docs/cli.html#link-4
https://www.jianshu.com/p/67de8aa052af