用plus.runtime.getProperty来获取软件的版本号!
再比较是不是要升级。
用plus.runtime.version取的软件版本号是APK的版本号!
用WGT方式升级后,不是重新安装APK,只是更新了WWW下的资料。
所以用plus.runtime.version取的版本号是原来的版本号。
我的例子:
<script type="text/javascript" charset="utf-8">
var wgtUrl;
var wgtver;
mui.init();
mui.plusReady(function() {
getAppInfo();
});
//升级检查列表,用Ajx从服务器获取最新的软件版本号
//返回的是JSON格式如{“version”:“1.0.4”,“downloadurl”:“http://xxxx.com/xxxx.wgt”}
function chkupapk() {
var GetDateaddr = "robotapp/json_postdata_func/public/";
var DateMyRequest = new Object();
DateMyRequest.type = "public_appversion";
var DateRequestResponse = new Object();
DateRequestResponse.Success = function(Result) {
if (Result == "error") {
ShowError();
}
var DateMyBResponse = new Object();
DateMyBResponse = JSON.parse(Result); //JSON反序列化,
if (DateMyBResponse.errmsg == "ok") {
if(compareVersion(wgtver,DateMyBResponse.resultmsg.version)){
wgtUrl=DateMyBResponse.resultmsg.downloadurl;
plus.nativeUI.confirm("发现新版本!是否要更新?",downWgt,"自动更新",["立即更新","跳过此版本","取 消"]);
}
}
};
DateRequestResponse.Error = function(Result) {
ShowError();
};
RESTRequest(DateMyRequest, DateRequestResponse,GetDateaddr); //发送POST
}
/**
- 比较版本大小,如果新版本nv大于旧版本ov则返回true,否则返回false
- @param {String} ov
- @param {String} nv
- @returN {Boolean}
*/
function compareVersion(ov, nv) {
if (!ov || !nv || ov == "" || nv == "") {
return false;
}
var b = false,
ova = ov.split(".", 4),
nva = nv.split(".", 4);
for (var i = 0; i < ova.length && i < nva.length; i++) {
var so = ova[i],
no = parseInt(so),
sn = nva[i],
nn = parseInt(sn);
if (nn > no || sn.length > so.length) {
return true;
} else if (nn < no) {
return false;
}
}
if (nva.length > ova.length && 0 == nv.indexOf(ov)) {
return true;
}
}
// 下载安装文件
var downWgt=function (i){
if(0==i.index){
plus.downloader.createDownload( wgtUrl, {filename:"_doc/update/"}, function(d,status){
if ( status == 200 ) {
console.log("下载wgt成功:"+d.filename);
installWgt(d.filename); // 安装wgt包
} else {
console.log("下载wgt失败!");
plus.nativeUI.alert("下载wgt失败!");
}
plus.nativeUI.closeWaiting();
}).start();
}
}
// 更新应用资源
function installWgt(path){
plus.runtime.install(path,{},function(){
plus.nativeUI.closeWaiting();
console.log("安装wgt文件成功!");
plus.nativeUI.alert("应用资源更新完成!",function(){
plus.runtime.restart();
});
},function(e){
plus.nativeUI.closeWaiting();
console.log("安装wgt文件失败["+e.code+"]:"+e.message);
plus.nativeUI.alert("安装更新文件失败["+e.code+"]:"+e.message);
});
}
function getAppInfo() {
plus.runtime.getProperty( plus.runtime.appid, function ( wgtinfo ) {
wgtver= wgtinfo.version;
chkupapk();
});
}
</script>
2 个回复
snickname
有解决吗?
我一个很小的测试工程都会出这种问题。客服还在看我提给他们的apk及wgt,暂时还没回复,如果有结果,我乐意分享。
老向
用plus.runtime.getProperty来获取软件的版本号!
再比较是不是要升级。
用plus.runtime.version取的软件版本号是APK的版本号!
用WGT方式升级后,不是重新安装APK,只是更新了WWW下的资料。
所以用plus.runtime.version取的版本号是原来的版本号。
我的例子:
<script type="text/javascript" charset="utf-8">
var wgtUrl;
var wgtver;
mui.init();
mui.plusReady(function() {
getAppInfo();
});
//升级检查列表,用Ajx从服务器获取最新的软件版本号
//返回的是JSON格式如{“version”:“1.0.4”,“downloadurl”:“http://xxxx.com/xxxx.wgt”}
function chkupapk() {
var GetDateaddr = "robotapp/json_postdata_func/public/";
var DateMyRequest = new Object();
DateMyRequest.type = "public_appversion";
var DateRequestResponse = new Object();
DateRequestResponse.Success = function(Result) {
if (Result == "error") {
ShowError();
}
var DateMyBResponse = new Object();
DateMyBResponse = JSON.parse(Result); //JSON反序列化,
if (DateMyBResponse.errmsg == "ok") {
if(compareVersion(wgtver,DateMyBResponse.resultmsg.version)){
wgtUrl=DateMyBResponse.resultmsg.downloadurl;
plus.nativeUI.confirm("发现新版本!是否要更新?",downWgt,"自动更新",["立即更新","跳过此版本","取 消"]);
}
}
};
DateRequestResponse.Error = function(Result) {
ShowError();
};
RESTRequest(DateMyRequest, DateRequestResponse,GetDateaddr); //发送POST
}
/**
*/
function compareVersion(ov, nv) {
if (!ov || !nv || ov == "" || nv == "") {
return false;
}
var b = false,
ova = ov.split(".", 4),
nva = nv.split(".", 4);
for (var i = 0; i < ova.length && i < nva.length; i++) {
var so = ova[i],
no = parseInt(so),
sn = nva[i],
nn = parseInt(sn);
if (nn > no || sn.length > so.length) {
return true;
} else if (nn < no) {
return false;
}
}
if (nva.length > ova.length && 0 == nv.indexOf(ov)) {
return true;
}
}
// 下载安装文件
var downWgt=function (i){
if(0==i.index){
plus.downloader.createDownload( wgtUrl, {filename:"_doc/update/"}, function(d,status){
if ( status == 200 ) {
console.log("下载wgt成功:"+d.filename);
installWgt(d.filename); // 安装wgt包
} else {
console.log("下载wgt失败!");
plus.nativeUI.alert("下载wgt失败!");
}
plus.nativeUI.closeWaiting();
}).start();
}
}
// 更新应用资源
function installWgt(path){
plus.runtime.install(path,{},function(){
plus.nativeUI.closeWaiting();
console.log("安装wgt文件成功!");
plus.nativeUI.alert("应用资源更新完成!",function(){
plus.runtime.restart();
});
},function(e){
plus.nativeUI.closeWaiting();
console.log("安装wgt文件失败["+e.code+"]:"+e.message);
plus.nativeUI.alert("安装更新文件失败["+e.code+"]:"+e.message);
});
}
function getAppInfo() {
plus.runtime.getProperty( plus.runtime.appid, function ( wgtinfo ) {
wgtver= wgtinfo.version;
chkupapk();
});
}
</script>