1.安装
npm i react-native-code-push --save
react-native link react-native-code-push
2.全局安装code-push 命令插件
npm install -g code-push-cli
//查看版本
code-push -v
3.注册code-push账号
//注册账号会跳出注册网页
code-push register
//授权通过之后,CodePush会告诉你“access key”,复制此key到终端即可完成登录
code-push login
PS.相关命令
code-push login //登陆
code-push loout //注销
code-push access-key ls //列出登陆的token
code-push access-key rm <accessKye> //删除某个 access-key
code-push app ls //查看所有app
code-push deployment history MyAPP Staging //c查看历史发布版本
code-push release-react MyAPP ios //发布到code-push Staging
code-push promote MyAPP Staging Production //从Staging发布到正式环境
code-push release-react MyAPP ios -d Production //直接发不到正式环境
code-push deployment ls MyAPP -k //查看key
4.创建应用
两种方法
(1).通过官网
(2).通过命令行
//ios
code-push app add helloworld ios react-native
//android
code-push app add helloworld android react-native
5.查看你的deployment key
code-push deployment ls helloworld -k
查看codepush的KEY
6.在Xcode中填写你的key
info.list
7.添加测试
code-push deployment add helloworld Test
8.代码中使用
import codePush from "react-native-code-push";
let codePushOptions = {checkFrequency: codePush.CheckFrequency.MANUAL};
HelloWorld = codePush(codePushOptions)(HelloWorld);
const myKey = '***'
codePush.checkForUpdate(myKey)
.then((update)=>{
console.log('update is' , update)
if(!update){
Alert.alert("提示","已是最新版本--",[
{text:"Ok", onPress:()=>{
console.log("点了OK");
}}
]);
}else{
codePush.sync({
deploymentKey: myKey,
updateDialog: {
optionalIgnoreButtonLabel: '稍后',
optionalInstallButtonLabel: '后台更新',
optionalUpdateMessage: '有新版本了,是否更新?',
title: '更新提示'
},
installMode: codePush.InstallMode.IMMEDIATE
});
}
})
PS:注意IOS是根据info中的版本号来决定是否更新,版本独立不影响的位数是三位
即iOS版本都是独立不影响,version=X.Y.Z,当codepush发布更新时,只会影响与其X.Y.Z三位数完全相同的版本,其他版本不会受影响。
打包
//在ios目录下创建bundle目录,在项目目录下执行,然后在Xcode中需要把 bundle 添加在项目下
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./ios/bundle/index.ios.jsbundle --assets-dest ./ios/bundle
//react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
//打包到 stagging
code-push release-react helloworld ios
//放到production下
code-push promote helloworld Staging Production
问题: 本人一直以为
WX20181112-152536@2x.png
如: 之前是1.0.0打包的,然后提交codepush为 v1版本,下次更新打包 1.0.1 为 v2 版本就可以了..试了半天,一直不更新.
结果:本来是1.0.0的版本,如果要进行热更新是不需要修改 info.list的版本号的,还是以1.0.0打包上去就可以了,codepush会以打包上去的 v1,v2的更新时间进行热更新,也就是codepush官网中的target version 就是你要进行热更新的版本
网友评论