Uniapp-Entwicklungs-Tutorial In der Spalte „Uniapp-Entwicklungs-Tutorial“ wird das Geschäft mit APP-Upgrades analysiert
1. Jedes Mal, wenn Sie die APP öffnen, müssen Sie die Anforderungshintergrundschnittstelle im globalen App.vue überprüfen.2. Vergleichen Sie die Versionsnummer, um zu überprüfen, ob ein Upgrade durchgeführt wurde. 3 Ein Online-Upgrade zur Abwicklung verschiedener Unternehmen. Verwenden Sie das offizielle Download-Paket für ein Hot-Update-API-Upgrade (beurteilt anhand des tatsächlichen Schnittstellen-Rückgabefelds). Feld, um den Benutzer daran zu erinnern
5. Identifizieren Sie, ob es sich um ein IOS- oder Android-Upgrade handelt, und der Benutzer klickt, um zum Upgrade zu springenZweitens: Geben Sie APP.vue onLaunch ein
2 laut Geschäftsanalyse//#ifdef APP-PLUS // APP检测更新 具体打包流程可以参考:https://ask.dcloud.net.cn/article/35667 plus.screen.lockOrientation('portrait-primary'); //竖屏正方向锁定 //获取是否热更新过 const updated = uni.getStorageSync('updated'); // 尝试读取storage if (updated.completed === true) { // 如果上次刚更新过 // 删除安装包及安装记录 console.log('安装记录被删除,更新成功'); uni.removeSavedFile({ filePath: updated.packgePath, success: res => { uni.removeStorageSync('updated'); } }); } else if (updated.completed === false) { uni.removeStorageSync('updated'); plus.runtime.install(updated.packgePath, { force: true }); uni.setStorage({ key: 'updated', data: { completed: true, packgePath: updated.packgePath }, success: res => { console.log('成功安装上次的更新,应用需要重启才能继续完成'); } }); uni.showModal({ title: '提示', content: '应用将重启以完成更新', showCancel: false, complete: () => { plus.runtime.restart(); } }); } else { //获取当前系统版本信息 plus.runtime.getProperty(plus.runtime.appid, widgetInfo => { //请求后台接口 解析数据 对比版本 this.$Request.getT('/appinfo/').then(res => { res = res.data[0]; if (res.wgtUrl && widgetInfo.version < res.version) { let downloadLink = ''; let androidLink = res.androidWgtUrl; let iosLink = res.iosWgtUrl; let ready = false; //校验是是不是热更新 if (res.wgtUrl.match(RegExp(/.wgt/))) { // 判断系统类型 if (plus.os.name.toLowerCase() === 'android') { console.log('安卓系统'); if (androidLink && androidLink !== '#') { // 我这里默认#也是没有地址,请根据业务自行修改 console.log('发现下载地址'); // 安卓:创建下载任务 if (androidLink.match(RegExp(/.wgt/))) { console.log('确认wgt热更新包'); downloadLink = androidLink; ready = true; } else { console.log('安卓推荐.wgt强制更新,.apk的强制更新请您自行修改程序'); } } else { console.log('下载地址是空的,无法继续'); } } else { console.log('苹果系统'); if (iosLink && iosLink !== '#') { // 我这里默认#也是没有地址,请根据业务自行修改 console.log('发现下载地址'); // 苹果(A):进行热更新(如果iosLink是wgt更新包的下载地址)判断文件名中是否含有.wgt if (iosLink.match(RegExp(/.wgt/))) { console.log('确认wgt热更新包'); downloadLink = iosLink; ready = true; } else { console.log('苹果只支持.wgt强制更新'); } } else { console.log('下载地址是空的,无法继续'); } } if (ready) { console.log('任务开始'); let downloadTask = uni.downloadFile({ url: downloadLink, success: res => { if (res.statusCode === 200) { // 保存下载的安装包 console.log('保存安装包'); uni.saveFile({ tempFilePath: res.tempFilePath, success: res => { const packgePath = res.savedFilePath; // 保存更新记录到stroage,下次启动app时安装更新 uni.setStorage({ key: 'updated', data: { completed: false, packgePath: packgePath }, success: () => { console.log('成功保存记录'); } }); // 任务完成,关闭下载任务 console.log('任务完成,关闭下载任务,下一次启动应用时将安装更新'); downloadTask.abort(); downloadTask = null; } }); } } }); } else { console.log('下载地址未准备,无法开启下载任务'); } } else { //不是热更新是在线更新 校验是否强制升级 if (res.method == 'true') { uni.showModal({ showCancel: false, confirmText: '立即更新', title: '发现新版本', content: res.des, success: res => { if (res.confirm) { this.$queue.showLoading('下载中...'); if (uni.getSystemInfoSync().platform == 'android') { uni.downloadFile({ url: androidLink, success: downloadResult => { if (downloadResult.statusCode === 200) { plus.runtime.install( downloadResult.tempFilePath, { force: false }, d => { console.log('install success...'); plus.runtime.restart(); }, e => { console.error('install fail...'); } ); } } }); } if (uni.getSystemInfoSync().platform == 'ios') { plus.runtime.openURL(iosLink, function(res) {}); } } else if (res.cancel) { console.log('取消'); } } }); } else { uni.showModal({ title: '发现新版本', confirmText: '立即更新', cancelText: '下次更新', content: res.des, success: res => { if (res.confirm) { this.$queue.showLoading('下载中...'); if (uni.getSystemInfoSync().platform == 'android') { uni.downloadFile({ url: androidLink, success: downloadResult => { if (downloadResult.statusCode === 200) { plus.runtime.install( downloadResult.tempFilePath, { force: false }, d => { console.log('install success...'); plus.runtime.restart(); }, e => { console.error('install fail...'); } ); } } }); } if (uni.getSystemInfoSync().platform == 'ios') { plus.runtime.openURL(iosLink, function(res) {}); } } else if (res.cancel) { console.log('取消'); } } }); } } } }); }); } //#endif
Das obige ist der detaillierte Inhalt vonEinführung in die Implementierung von Uni-App-Online-Upgrades und Hot-Updates. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!