有時候需要給用戶一個自主的權利,自主檢測app是否是最新版本。
如何實現?
1.點擊調用接口,檢測是否有更新。
默認APICloud會自動檢測版本更新,用戶也可以在config.xml里配置autoUpdate為false,然后使用mam模塊來檢測更新,mam模塊還提供自定義事件功能
示例代碼:
var mam = api.require('mam');
mam.checkUpdate(function( ret, err ){
if (ret) {
alert( JSON.stringify( ret ) );
} else{
alert( JSON.stringify( err ) );
}
});
返回數據:
{
status:true, //操作成功狀態值
result:
{
update:true, //是否有更新
closed:true, //設備上當前版本是否被強行關閉
version:'1.0', //新版本版本號
versionDes:'', //新版本更新描述
closeTip:'', //提示用戶應用版本被強行關閉時彈框的提示語
updateTip:'', //提示用戶有更新時彈框的提示語
source:'', //新版本安裝包的下載地址
time:'' //新版本的發布時間
}
}
2.彈出comfirm框,讓用戶選擇是否升級
layer.confirm('有新版本啦!<br/>最新版本:'+ret.result.version+'<br/>更新描述:<br/>'+updateTip+'<br/>發布時間:'+ret.result.time,
{
title:'更新提示',
btn: ['立即更新','取消'] //按鈕
}, function(){
}, function(){
});
3.執行下載操作,api中有download方法
api.download({
url: url,
savePath: 'fs://test.rar',
report: true,
cache: true,
allowResume: true
}, function(ret, err) {
if (ret.state == 1) {
//下載成功
} else {
}
});
4.執行安裝installApp方法
//Android用法:
api.installApp({
appUri: 'file://xxx.apk'
});
//iOS用法:
api.installApp({
appUri: 'https://list.kuaiapp.cn/list/KuaiAppZv7.1.plist' //安裝包對應plist地址
});
整合如下:
// 檢查更新
function checkUpdate() {
var mam = api.require('mam');
mam.checkUpdate(function( ret, err ){
if (ret) {
if (!ret.status) {
toast('服務器繁忙,請稍后再試');
return;
}
if (ret.result.update) {
var updateTip;
updateTip = ret.result.updateTip.replace(/\r\n/g,"<BR>");
updateTip =updateTip.replace(/\n/g,"<BR>");
layer.confirm('有新版本啦!<br/>最新版本:'+ret.result.version+'<br/>更新描述:<br/>'+updateTip+'<br/>發布時間:'+ret.result.time,
{
title:'更新提示',
btn: ['立即更新','取消'] //按鈕
}, function(){
if (api.systemType == "android") {
api.download({
url : ret.result.source,
report : true
}, function(retdownload, err) {
if (retdownload && 0 == retdownload.state) {/* 下載進度 */
api.toast({
msg : "正在下載應用" + retdownload.percent + "%",
duration : 2000
});
}
if (retdownload && 1 == retdownload.state) {/* 下載完成 */
var savePath = retdownload.savePath;
api.installApp({
appUri : savePath
});
}
});
}
if (api.systemType == "ios") {
api.installApp({
appUri : ret.result.source
});
}
}, function(){
});
return;
} else {
toast('當前已是最新版本');
return;
}
} else{
toast('服務器繁忙,請稍后再試');
return;
}
});
}