我使用uniapp開(kāi)發(fā)的APP暫時(shí)還沒(méi)有上架拙友,Android是將apk放在了服務(wù)上,將線上地址生成了二維碼吏饿,IOS是將ipa(企業(yè)版)依托線上分發(fā)網(wǎng)站生成二維碼庇楞,供內(nèi)部使用。
不管是上架還是內(nèi)部使用丛忆,開(kāi)發(fā)APP后我們不可避免的要更新版本,我們暫不考慮熱更新仍秤,直接強(qiáng)制更新熄诡,如果不同意,那么就關(guān)閉APP诗力!嘿哈~凰浮!
用戶確認(rèn)時(shí)我們通過(guò)瀏覽器打開(kāi)新版本的下載地址,進(jìn)行下載苇本。
plus.runtime.openURL()
點(diǎn)擊取消時(shí)就無(wú)情的將APP進(jìn)行關(guān)閉袜茧。
plus.runtime.quit() // Android
IOS系統(tǒng)不支持這種關(guān)閉APP的方法,插件市場(chǎng)也有原生插件可以引用將其關(guān)閉瓣窄,插件再原生也不如一行代碼來(lái)的省力不是么笛厦?
plus.ios.import("UIApplication").sharedApplication().performSelector("exit"); // IOS
上面就是所需要用到的核心拉,當(dāng)打開(kāi)APP時(shí)就要觸發(fā)俺夕,所以將此代碼寫(xiě)在App.vue的onLaunch中裳凸;因?yàn)槲覀冡槍?duì)的是APP使用的,所以記得要填寫(xiě)條件編譯劝贸,否則H5瀏覽時(shí)會(huì)報(bào)錯(cuò)姨谷!
export default {
onLaunch: function() {
const res = uni.getSystemInfoSync() // 獲取系統(tǒng)信息
//#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
}
}
在這里給后端傳了兩個(gè)參數(shù)一個(gè)手機(jī)系統(tǒng)以0或1進(jìn)行發(fā)送,還有一個(gè)就是當(dāng)前云打包時(shí)的版本號(hào)映九,以便后端進(jìn)行版本的比對(duì)梦湘!
一個(gè)簡(jiǎn)單的功能就可以實(shí)現(xiàn),如果要考慮當(dāng)前手機(jī)是否連接wifi件甥,更新包的大小捌议,安裝失敗或更新失敗等問(wèn)題的話,后續(xù)還需持續(xù)的完善嚼蚀,供參考!