基于uniapp 的在线更新支持ios 和安卓
安卓支持热更新和重新安装 ios 支持热更新和打开应用商店。
·
基于uniapp 的在线更新支持ios 和安卓
安卓支持热更新和重新安装 ios 支持热更新和打开应用商店
import updatejs from 'common/update.js';
onLaunch: function() {
console.log('App Launch')
uni.setStorageSync('getUnTakeListStatus', true);
this.isupdate();
},
isupdate(){
let appversion = uni.getSystemInfoSync().appVersion;
// 热更新 更新的为 appWgtVersion
let appWgtVersion= uni.getSystemInfoSync().appWgtVersion;
getAppVersionData({}).then(res=>{
if(res.data.version!=appversion){
if(appWgtVersion!=res.data.version){
updatejs.check({
appversion:res.data.version,
downloadurl:res.data.downloadurl,
live:res.data.live,
appstore:res.data.appstore,
apkurl:res.data.apkurl,
is_root:res.data.is_root,
title: "检测到有新版本!",
content: "请升级app到最新版本!",
canceltext: "暂不升级",
oktext: "立即升级"
});
}
}
});
}
/**
* 是否热更新 取决于有木有添加新的插件,或者uniapp 有木有新的更新如果版本不变即可热更新
*/
function check(param = {}) {
// 合并默认参数
param = Object.assign({
title: "检测到有新版本!",
content: "请升级app到最新版本!",
canceltext: "暂不升级",
oktext: "立即升级"
}, param)
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
let platform = plus.os.name.toLocaleLowerCase()
if (true) {
if (platform == 'ios') {
// 如果是ios,则跳转到appstore
if(param.live==2){
plus.runtime.openURL(param.appstore)
return;
}else{
uni.showModal({
title: param.title,
content: param.content,
showCancel: true,
confirmText: param.oktext,
cancelText: param.canceltext,
success: res => {
if (!res.confirm) {
console.log('取消了升级');
if(param.is_root==1){
plus.runtime.quit();
}
}else{
var dtask = plus.downloader.createDownload(param.downloadurl, {
filename: "_downloads/"
},
function (d, status) {
// 下载完成
if (status == 200) {
plus.runtime.install(d.filename, {
force: true
}, function () {
//进行重新启动;
plus.runtime.restart();
}, (e) => {
uni.showToast({
title: '安装升级包失败:' + JSON
.stringify(e),
icon: 'none'
})
});
} else {
this.tui.toast("下载升级包失败,请手动去站点下载安装,错误码: " +
status);
}
});
let view = new plus.nativeObj.View("maskView", {
backgroundColor: "rgba(0,0,0,.6)",
left: ((plus.screen.resolutionWidth / 2) - 45) +
"px",
bottom: "80px",
width: "90px",
height: "30px"
})
view.drawText('开始下载', {}, {
size: '12px',
color: '#FFFFFF'
});
view.show()
dtask.addEventListener("statechanged", (e) => {
if (e && e.downloadedSize > 0) {
let jindu = ((e.downloadedSize / e.totalSize) *
100).toFixed(2)
view.reset();
view.drawText('进度:' + jindu + '%', {}, {
size: '12px',
color: '#FFFFFF'
});
}
}, false);
dtask.start();
}
// }
}
})
}
}
// android进行如下操作
uni.showModal({
title: param.title,
content: param.content,
showCancel: true,
confirmText: param.oktext,
cancelText: param.canceltext,
success: res => {
if (!res.confirm) {
console.log('取消了升级');
if(param.is_root==1){
plus.runtime.quit();
}
}else{
// if (data.live === 2) {
//去应用市场更新
// plus.runtime.openURL(param.apkurl);
// plus.runtime.restart();
// } else {
// 清除缓存
// 开始下载
// 创建下载任务
var downurl="";
if(param.live==2){
downurl=param.apkurl
}else{
downurl=param.downloadurl
}
var dtask = plus.downloader.createDownload(downurl, {
filename: "_downloads/"
},
function (d, status) {
// 下载完成
if (status == 200) {
plus.runtime.install(d.filename, {
force: true
}, function () {
//进行重新启动;
plus.runtime.restart();
}, (e) => {
uni.showToast({
title: '安装升级包失败:' + JSON
.stringify(e),
icon: 'none'
})
});
} else {
this.tui.toast("下载升级包失败,请手动去站点下载安装,错误码: " +
status);
}
});
let view = new plus.nativeObj.View("maskView", {
backgroundColor: "rgba(0,0,0,.6)",
left: ((plus.screen.resolutionWidth / 2) - 45) +
"px",
bottom: "80px",
width: "90px",
height: "30px"
})
view.drawText('开始下载', {}, {
size: '12px',
color: '#FFFFFF'
});
view.show()
dtask.addEventListener("statechanged", (e) => {
if (e && e.downloadedSize > 0) {
let jindu = ((e.downloadedSize / e.totalSize) *
100).toFixed(2)
view.reset();
view.drawText('进度:' + jindu + '%', {}, {
size: '12px',
color: '#FFFFFF'
});
}
}, false);
dtask.start();
}
// }
}
})
}
});
}
export default {
check
}
更多推荐
已为社区贡献1条内容
所有评论(0)