问题:在使用手机应用App时,我们都会遇到,每隔一段时间在我们登入App后,会有一个弹出框提醒用户:该应用APP有了新的版本,请前往下载。那这是如何实现的呢?我们都知道,每个程序都会有自己的版本号,以方便管理!版本号越大,说明版本越新,功能越多。
这里提醒用户的更新消息,就是通过在用户打开应用程序后,App 会向服务器发送请求,判定当前版本是否是最新版本,如果不是最新版本,就会将最新版本的的通知消息发回给用户,让用户自己决定是否更新。
用户端App发给服务器端的信息包括:当前版本号,我的手机平台。 服务器在不是最新版本的情况下,发回的消息至少要包括:最新版本号,最新版本下载地址。
//获取升级描述文件服务器地址
var updateURL = "http://www.mynet.com/path";
// check the newest application
function update() {
var platform = plus.os.name;
var currVersion = plus.runtime.version;
$.ajax({
type : "post",
dataType : "jsonp",
url : updateURL + "?callback=?",
data : {
"version" : currVersion,
"platform" : "Android"
},
success : function(data){
if(!compareVersion(currVersion,data.version,<span style="font-family: Arial, Helvetica, sans-serif;">)</span><span style="font-family: Arial, Helvetica, sans-serif;">){// 无最新版本</span>
return;
}
// 有最新版本更新
plus.nativeUI.confirm("现在有最新版本,是否更新?", function(event) {
if (event.index) {
plus.runtime.openURL(data.url);
}
}, "更新提示", ["下次再说", "立即更新"]);
},
error : function(){// 获取更细数据失败
plus.nativeUI.alert("更新失败", function(){
// 回调函数
}, "提示", "确定");
}
});
}
/**
* 比较版本大小
* @param {String} curr
* @param {String} newest
* @return {Boolean} 如果新版本newest大于旧版本curr则返回true,否则返回false
*/
function compareVersion(curr, newest) {
var arr_curr = curr.split(".");
var arr_newest = newest.split(".");
for (var i = 0; i < 3; i++) {
if (parseInt(arr_newest[i]) > parseInt(arr_curr[i])) {
return true;
}
}
return false;
}