美文网首页
react-native-code-push热更新使用

react-native-code-push热更新使用

作者: 一往情深_b560 | 来源:发表于2018-04-16 10:22 被阅读138次
    学如逆水行舟,不进则退

    所有流程如下

    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)下的更新包。`
    

    😘😘😘如果觉得对您有帮助,麻烦请点个❤️哦

    相关文章

      网友评论

          本文标题:react-native-code-push热更新使用

          本文链接:https://www.haomeiwen.com/subject/qruskftx.html