我使用uniapp开发的APP暂时还没有上架,Android是将apk放在了服务上,将线上地址生成了二维码,IOS是将ipa(企业版)依托线上分发网站生成二维码,供内部使用。
不管是上架还是内部使用,开发APP后我们不可避免的要更新版本,我们暂不考虑热更新,直接强制更新,如果不同意,那么就关闭APP!嘿哈~!
捕获.PNG
用户确认时我们通过浏览器打开新版本的下载地址,进行下载。
plus.runtime.openURL()
点击取消时就无情的将APP进行关闭。
plus.runtime.quit() // Android
IOS系统不支持这种关闭APP的方法,插件市场也有原生插件可以引用将其关闭,插件再原生也不如一行代码来的省力不是么?
plus.ios.import("UIApplication").sharedApplication().performSelector("exit"); // IOS
上面就是所需要用到的核心拉,当打开APP时就要触发,所以将此代码写在App.vue的onLaunch中;因为我们针对的是APP使用的,所以记得要填写条件编译,否则H5浏览时会报错!
export default {
onLaunch: function() {
const res = uni.getSystemInfoSync() // 获取系统信息
//#ifdef APP-PLUS
uni.request({
url: "http://39.97.171.107:8881/ccbcase/m?xwl=api-v1/test-version/v1/getVersion",
data: {
"system": res.platform === "android" ? 0 : 1,
"versionNo": plus.runtime.version
},
success: (res) => {
if (res.data.success == true && res.data.versionInfo.isUpdate == true) {
uni.showModal({
title: "更新提示",
content: '新版本' + res.data.versionInfo.VERSION_NAME,
success: (req) => {
if (req.confirm) {
plus.runtime.openURL(res.data.versionInfo.APK_URL);
} else {
plus.os.name == "Android" ? plus.runtime.quit() : plus.ios.import("UIApplication").sharedApplication().performSelector("exit");
}
}
})
}
}
})
// #endif
}
}
在这里给后端传了两个参数一个手机系统以0或1进行发送,还有一个就是当前云打包时的版本号,以便后端进行版本的比对!
一个简单的功能就可以实现,如果要考虑当前手机是否连接wifi,更新包的大小,安装失败或更新失败等问题的话,后续还需持续的完善,供参考!
网友评论