cordova 热更新插件cordova-hot-code-push-plugin 方法汇总及js调用方式

原生热更新插件方法说明

*使用来自web端的回调初始化应用程序。

-(void):jsInitPlugin

 

*设置插件选项。

-(void)jsConfigure

 

*热更新检查。

-(void)jsFetchUpdate

 

*安装更新(如果有)。

 

-(void)jsInstallUpdate

 

*显示对话框,请求通过应用商店更新应用程序。

 

-(void)jsRequestAppUpdate

 

*检查是否已加载新版本并可以安装。

-(void)jsIsUpdateAvailableForInstallation:

 

*获取有关应用程序和web版本的信息。

-(void)jsGetVersionInfo

 

js调用插件方法示例:

chcp命令后面加方法名即可调用。

 chcp.installUpdate(function (error) {
                if (error) {
                    console.error(error);
                    def.reject();
                } else {
                    def.resolve();;
                }
            });
        };

      
 chcp.fetchUpdate(function (error, data) {
                if (error) {
                    console.error(error);
                } else {
                    doInstall();
                }
            }, options);
        };

js自动热更新方法:

//静默升级
function fetchUpdate(needConfirm) {
    var _this = this;
    var def = $.Deferred();
    const options = {
        'config-file': Global.CHCP_URL
    };
    if (isMobile()) {
        function doInstall() {
            chcp.installUpdate(function (error) {
                if (error) {
                    console.error(error);
                    def.reject();
                } else {
                    def.resolve();;
                }
            });
        };

        function doFetchUpdate() {
            chcp.fetchUpdate(function (error, data) {
                if (error) {
                    console.error(error);
                } else {
                    doInstall();
                }
            }, options);
        };

        getLocalFileTxt(getWwwFilePath() + "chcp.json", function (filestr) {
            localJson = JSON.parse(filestr);
            getAjax({
                url: Global.CHCP_URL,
                success: function (remoteJson) {
                    var localTime = timeString2Date(localJson.release);
                    var remoteTime = timeString2Date(remoteJson.release);
                    cordova.getAppVersion.getVersionNumber().then(function (data) {
                        function parseVersion(version) {
                            var arr = version.split('.');
                            var num2 = 0;
                            if (arr.length >= 3) {
                                var str = arr[2];
                                if (str.length > 3) {
                                    str = str.substr(str.length - 3, str.length);
                                }
                                num2 = parseInt(str);
                            }
                            var num1 = 0;
                            if (arr.length >= 2) {
                                var str = arr[1];
                                if (str.length > 3) {
                                    str = str.substr(str.length - 3, str.length);
                                }
                                num1 = parseInt(str);
                            }
                            var num0 = 0;
                            if (arr.length >= 1) {
                                var str = arr[0];
                                if (str.length > 3) {
                                    str = str.substr(str.length - 3, str.length);
                                }
                                num0 = parseInt(str);
                            }
                            return num0 * 1000000 + num1 * 1000 + num2;
                        };
                        var local_version_number = parseVersion(data);
                        var remote_min_version_number = parseVersion(remoteJson.min_version_number);

                        if (local_version_number >= remote_min_version_number && localTime < remoteTime) {
                            if (needConfirm) {
                                vant.Dialog.confirm({
                                    title: '更新',
                                    message: '有可更新数据,是否现在更新?'
                                }).then(function () {
                                    doFetchUpdate();
                                }).catch(function () {

                                });
                            } else {
                                doFetchUpdate();
                            }
                        } else {
                            def.reject();
                        }
                    });

                },
                error: function () {
                    def.reject();
                },
            });
        });
    } else {
        def.reject();
    }

    return def.promise();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值