思路:
1.首先要理解更新方式的區(qū)別 靜默更新、弱更新以及強(qiáng)制更新。
APP更新機(jī)制-靜默更新、弱更新、強(qiáng)更新 - 知乎
2.其次要理解不同更新方式要用到的插件----------這里推薦插件應(yīng)用市場的插件。
app升級、整包更新和熱更新組件 支持vue3 支持打開安卓、蘋果應(yīng)用市場,wgt靜默更新 - DCloud 插件市場
3.一般來說每個APP自行發(fā)布后臺管理系統(tǒng)一般要有放置APP信息的菜單。
4.?最后要和后端進(jìn)行溝通返回的APP信息,前端在APP.vue文件進(jìn)行根據(jù)個人需求進(jìn)行操作。
注意:
1.仔細(xì)閱讀插件市場的文檔,非常可靠。
2.如果是wgt熱更新那么下載地址必須以wgt結(jié)尾,否則會提示錯誤。如果是整包更新安卓必須是apk結(jié)尾的網(wǎng)址,否則會跳到瀏覽器下載。
3.特別強(qiáng)調(diào)后端返回的格式以及字段必須和組件內(nèi)一致。
操作流程
1.首先進(jìn)入插件市場,導(dǎo)入此插件到項(xiàng)目中。(導(dǎo)入插件時會有提示是否注冊page,選擇是,但不能是第一項(xiàng))
?2.其次在App.vue文件進(jìn)行初始化信息配置。
?3.這里我用的是模擬接口數(shù)據(jù)來測試的。---后期需要換成后端返回的數(shù)據(jù)
updateAPPTest() {
//#ifdef APP-PLUS
// 獲取本地應(yīng)用資源版本號
plus.runtime.getProperty(plus.runtime.appid, (inf) => {
//獲取服務(wù)器的版本號
const data = {
// 版本更新內(nèi)容 支持<br>自動換行
describe: '1. 修復(fù)已知問題 <br/> 2. 優(yōu)化用戶體驗(yàn)1 ',
edition_url: 'http://192.1.1.48:80/sc.apk', //apk、wgt包下載地址或者應(yīng)用市場地址 安卓應(yīng)用市場 market://details?id=xxxx 蘋果store itms-apps://itunes.apple.com/cn/app/xxxxxx
edition_force: 0, //是否強(qiáng)制更新 0代表否 1代表是
package_type: 0, //0是整包升級(apk或者appstore或者安卓應(yīng)用市場) 1是wgt升級
edition_issue: 1, //是否發(fā)行 0否 1是 為了控制上架應(yīng)用市場審核時不能彈出熱更新框
edition_number: 101, //版本號 最重要的manifest里的版本號 (檢查更新主要以服務(wù)器返回的edition_number版本號是否大于當(dāng)前app的版本號來實(shí)現(xiàn)是否更新)
edition_name: '1.0.1', // 版本名稱 manifest里的版本名稱
edition_silence: 0, // 是否靜默更新 0代表否 1代表是
}
//res.data.xxx根據(jù)后臺返回的數(shù)據(jù)決定(我這里后端返回的是data),所以是res.data.data
//判斷后臺返回版本號是否大于當(dāng)前應(yīng)用版本號 && 是否發(fā)行 (上架應(yīng)用市場時一定不能彈出更新提示)
if (Number(data.edition_number) > Number(inf.versionCode) && data.edition_issue == 1) {
console.log('找到新版本')
//如果是wgt升級,并且是靜默更新 (注意!?。?如果是手動檢查新版本,就不用判斷靜默更新,請直接跳轉(zhuǎn)更新頁,不然點(diǎn)擊檢查新版本后會沒反應(yīng))
if (data.package_type == 1 && data.edition_silence ==
1) {
//調(diào)用靜默更新方法 傳入下載地址
silenceUpdate(data.edition_url)
} else {
//跳轉(zhuǎn)更新頁面 (注意?。。∪绻鹥ages.json第一頁的代碼里有一打開就跳轉(zhuǎn)其他頁面的操作,下面這行代碼最好寫在setTimeout里面設(shè)置延時3到5秒再執(zhí)行)
uni.navigateTo({
url: '/uni_modules/rt-uni-update/components/rt-uni-update/rt-uni-update?obj=' +
JSON.stringify(data)
});
}
} else {
console.log('已經(jīng)是最新版本了')
// 如果是手動檢查新版本 需開啟以下注釋
uni.showModal({
title: '提示',
content: '已是最新版本',
showCancel: false
})
}
});
//#endif
},
注意后端返回的字段結(jié)果信息:
data:{
// 版本更新內(nèi)容 支持<br>自動換行
describe: '1. 修復(fù)已知問題<br>
2. 優(yōu)化用戶體驗(yàn)',
edition_url: '', //apk、wgt包下載地址或者應(yīng)用市場地址 安卓應(yīng)用市場 market://details?id=xxxx 蘋果store itms-apps://itunes.apple.com/cn/app/xxxxxx
edition_force: 0, //是否強(qiáng)制更新 0代表否 1代表是
package_type: 1, //0是整包升級(apk或者appstore或者安卓應(yīng)用市場) 1是wgt升級
edition_issue:1, //是否發(fā)行 0否 1是 為了控制上架應(yīng)用市場審核時不能彈出熱更新框
edition_number:100, //版本號 最重要的manifest里的版本號 (檢查更新主要以服務(wù)器返回的edition_number版本號是否大于當(dāng)前app的版本號來實(shí)現(xiàn)是否更新)
edition_name:'1.0.0',// 版本名稱 manifest里的版本名稱
edition_silence:0, // 是否靜默更新 0代表否 1代表是
}
4.看下實(shí)現(xiàn)效果(這里演示的是應(yīng)用內(nèi)安卓整包更新)
文章來源:http://www.zghlxwxcb.cn/news/detail-559496.html
注意:
大坑
? ??文章來源地址http://www.zghlxwxcb.cn/news/detail-559496.html
所以要使用plus.runtimegetProperty來獲取版本號
到了這里,關(guān)于uniapp打包APP實(shí)現(xiàn)應(yīng)用內(nèi)整包更新或熱更新的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!