react-native-code-push热更新使用
2018-04-16 本文已影响138人
一往情深_b560
学如逆水行舟,不进则退
所有流程如下
1.安装 CodePush CLI
2.注册 CodePush账号
3.在CodePush服务器注册App
4.RN代码中集成CodePush
5.原生应用中配置CodePush
6.发布更新的版本
①code-push -v 检查是否安装过code-push命令行工具,安装过可跳过下面步骤:
npm install -g code-push-cli
②code-push login 查看是否已注册并登录,如果已登录可跳过下面步骤:
code-push register会自动打开一个授权网页,选择其中一种方式授权获取访问code-push服务器的token秘钥,
这里我选择的是github账号,授权后复制这个token,然后在终端中将这个token填写进去即可
③在CodePush服务器注册App
添加iOS平台应用
$ code-push app add iOSRNHybrid ios react-native
添加Android平台应用
$ code-push app add iOSRNHybridForAndroid Android react-native
④RN代码中集成CodePush
#安装组件
$ npm install react-native-code-push --save
#添加原生依赖,这里添加依赖我们使用自动添加依赖的方式
$ react-native link react-native-code-push
#如无法添加原生依赖 可采用rnpm关联,
npm I -g rnpm //安装rnpm
rnpm link react-native-code-push //关联原生
RN项目中代码可参考以下链接(任意一个都可以)
CrazyCodeBoy的简书
光强_上海的简书
注:最后提醒一点 如果检查更新不是在App启动的时候更新(在根组件中实现的检查更新),
而是通过设置手动点击检查更新,那么必须在根组件的`componentDidMount()方法中添加
codePush.notifyAppReady()`,否则应用会出现第一次重启是更新版,第二次重启又回滚到旧版的现象。
主要代码如下
codePush.checkForUpdate(deploymentKey)
.then((update)=>{
if(!update) {
Alert.alert("提示","已是最新版本--", [{text:"Ok",onPress:()=>{console.log("点了OK");}}]);
}else{
codePush.sync({
deploymentKey: deploymentKey,
updateDialog: {
optionalIgnoreButtonLabel:'稍后',
optionalInstallButtonLabel:'立即更新',
optionalUpdateMessage:'有新版本了,是否更新?',
title:'更新提示'},
installMode: codePush.InstallMode.IMMEDIATE
},(status)=>{
switch(status) {
casecodePush.SyncStatus.DOWNLOADING_PACKAGE:
console.log("DOWNLOADING_PACKAGE");
break;
casecodePush.SyncStatus.INSTALLING_UPDATE:
console.log(" INSTALLING_UPDATE");
break;
}},(progress)=>{
console.log(progress.receivedBytes +" of "+ progress.totalBytes +" received.");
});
}
})
⑤Xcode中配置
1.Project-info-Configurations 添加新的环境(例:Staging)
2.Per-configuration Build Products Path - Staging 修改value为$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)
3.选择Build Settings tab,点击 + 号,选择Add User-Defined Setting,将key设置为CODEPUSH_KEY,Release 和 Staging的值为前面创建的Deployment Key ,我们直接复制进去即可
4.打开Info.plist文件,在CodePushDeploymentKey中输入$(CODEPUSH_KEY),并修改Bundle versions string, short为三位
至此,iOS平台CodePush环境集成完毕,发布一个更新包试试吧
注意:CodePush默认是更新Staging环境的,如果发布生产环境的更新包,需要指定--d参数:--d Production,如果发布的是强制更新包,需要加上 --m true强制更新
$ code-push release-react Biaze ios --t 1.0.0 --dev false --d Production --des "这是第一个更新包" --m true
`这句命令意思是向code-push服务器中1.0.0版本的iOSRNHybrid应用发布一个强制(--m true)的生产环境(--d Production)下的更新包。`
😘😘😘如果觉得对您有帮助,麻烦请点个❤️哦