原生热更新插件方法说明
*使用来自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();
}