• 用CodePush在React Native App中做热更新


    最近在学React Native,学到了CodePush热更新。

    老师讲了两种实现的方法,现将其记录一下。

    相比较原生开发,使用React Native开发App不仅能节约开发成本,还能做原生开发不能实现的热更新功能。

    使用原生技术开发App时,每次代码做了改动后,都需要提交到应用商店进行审核,审核通过后,需要等用户重新下载安装后才会生效。而如果使用React Native开发App,开发者可随时发布新版本,不用经过应用商店的审核,用户即可使用到新版本,并且还可做到不用经过用户的同意就强制安装新版本。

    CodePush是微软的技术,因为服务器在国外,所以不太稳定。如果开发的App是针对国内市场的,应该使用CodePush中国

    要使用CodePush,需安装cpcn-react-native依赖包。可使用官方提供的工具cpcn-client来安装依赖包。cpcn-client的下载地址是:http://code-push.cn/docs/1010.htm 。

    代码实现比较简单。第一种方法是直接改变App.js组件:

    import cpcn from 'cpcn-react-native';
    
    class App  extends Component {
        
    }
    
    App = cpcn(App);
    
    export default App;

    这种方法在有新版本更新时,会使用默认的提示框,提示框中的文字也是默认的。灵活性不够。

    第二种方法比较灵活,可以自定义对话框和进度条。这种方法使用 cpcn.check() 方法。

    import cpcn from "cpcn-react-native";
    
    class App extends Component {
        componentDidMount(){
            cpcn.check({
                checkCallback: (remotePackage, agreeContinueFun) => {
                    if(remotePackage){
    
                    }
                },
                downloadProgressCallback: (downloadProgress) => {
    
                },
                installedCallback: (restartFun) => {
    
                }
            });
        }
    }
    
    export default App;

    将 cpcn.check() 方法写在 App.js 的 componentDidMount 方法内,当 App 组件加载后调用此依法。

    cpcn.check() 方法的参数:

    checkCallback: 在检查是否有可更新的版本后调用这个方法,如果 remotePackage 不是 null,表示有可更新的版本。如果要继续更新,就调用 agreeContinueFun(true),如果不想继续更新,就调用 agreeContinueFun(false)。

    downloadProgressCallback: 在下载新版本的过程中调用这个方法。可用它的参数 downloadProgress 做进度条。downloadProgress.receivedBytes 是已经下载的字节数,downloadProgress.totalBytes 是总字节数。

    installedCallback: 当新版本安装完成后调用这个方法。需调用 restartFun(true) 重启App,重启后新版本就生效了。

  • 相关阅读:
    (转)JQuery中$.ajax()方法参数详解
    __dopostback的用法 . 编辑
    (转)__dopostback的用法 .
    (转)如何区分一个程序员是“老手“还是“新手“?
    jQuery验证框架 .
    location.href的用法
    为用户设置密码
    设置环境变量
    用 xampp 在ubuntu 下配置php 运行环境 lampp
    安装与配置JDK
  • 原文地址:https://www.cnblogs.com/mafengzi/p/11632498.html
Copyright © 2020-2023  润新知