安卓手機(jī)版本自檢更新思路,現(xiàn)在后臺(tái)定義一個(gè)版本參數(shù)海渊,每次打開app的時(shí)候進(jìn)行版本參數(shù)獲取枢劝,并且跟本地的版本參數(shù)進(jìn)行比較,如果本地的版本參數(shù)小于或不等于后臺(tái)定義的版本圈浇,那么就會(huì)提醒更新版本寥掐,然后從放在后臺(tái)服務(wù)器的apk進(jìn)行下載安裝。
檢查版本磷蜀,提醒用戶是否更新版本召耘,這里的plus是html5+的api
var server_version = store.state.appversion
export async function AndroidCheckUpdate(){
try{
let version = await api('v2/cms/QueryConfigs',{
data:{
'type':'sys',
'key':'cthrVersion'
}
})
console.log('version',version)
server_version = version[0].value
let curr_version = store.state.appversion
checkVersionToLoadUpdate(server_version,curr_version)
}catch(e){
console.log(e)
}
}
function checkVersionToLoadUpdate(server_version,curr_version){
console.log(server_version+'---'+curr_version,server_version !== curr_version);
if(server_version !== curr_version){
//TODO 此處判斷是否為 WIFI連接狀態(tài)
if(plus.networkinfo.getCurrentType()!=3){
uni.showToast({
title: '有新的版本發(fā)布,檢測(cè)到您目前非Wifi連接褐隆,為節(jié)約您的流量污它,程序已停止自動(dòng)更新,將在您連接WIFI之后重新檢測(cè)更新',
mask: true,
duration: 5000,
icon:"none"
});
return;
}else{
uni.showModal({
title: "版本更新",
content: `有新的版本發(fā)布庶弃,檢測(cè)到您當(dāng)前為Wifi連接衫贬,是否立即進(jìn)行新版本下載?當(dāng)前下載版本為${server_version}`,
confirmText:'立即更新',
cancelText:'稍后進(jìn)行',
success: function (res) {
if (res.confirm) {
uni.reLaunch({
url:'/pages/auth/updatePage/updatePage'
})
} else if (res.cancel) {
console.log('稍后更新');
}
}
});
}
}
}
進(jìn)入下載頁(yè)進(jìn)行apk包下載歇攻,這里下載完成之后會(huì)自動(dòng)拉起安裝框進(jìn)行文件安裝固惯。
var totalSize = 0
var nowbaifen = 0
export function uniDownload(){
uni.showToast({
icon:"none",
mask: true,
title: '有新的版本發(fā)布,檢測(cè)到您目前為Wifi連接缴守,程序已啟動(dòng)自動(dòng)更新葬毫。新版本下載完成后將自動(dòng)彈出安裝程序',
duration: 5000,
});
//設(shè)置 最新版本apk的下載鏈接
var downloadApkUrl = '最新版本apk的下載鏈接';
var dtask = plus.downloader.createDownload( downloadApkUrl, {}, function ( d, status ) {
// 下載完成
if ( status == 200 ) {
plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename),{},{},function(error){
uni.showToast({
title: '安裝失敗',
duration: 1500
});
})
} else {
uni.showToast({
title: '更新失敗',
duration: 1500
});
}
});
//監(jiān)聽下載
dtask.addEventListener("statechanged", function (download, status) {
switch (download.state) {
case 2:
// plus.nativeUI.showWaiting("正在下載...");
break;
case 3:
//進(jìn)度條百分比 totalSize為總量,baifen為當(dāng)前下載的百分比
if(totalSize==0){
totalSize=parseInt(download.totalSize);
}
if(parseInt(download.downloadedSize/totalSize*100)!=nowbaifen){
nowbaifen=parseInt(download.downloadedSize/totalSize*100);
store.state.baifen = nowbaifen
// store.commit('getBaifen',nowbaifen)
console.log('baifen',store.state.baifen)
}
break;
case 4:
uni.showToast({
title: '下載完成',
duration: 1500
});
// plus.nativeUI.closeWaiting();
break;
}
});
dtask.start();
}