From 7b3b789853befca8b50aed39b38fe09a278634e5 Mon Sep 17 00:00:00 2001 From: weipengfei <2187978347@qq.com> Date: Fri, 8 Sep 2023 18:54:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 2 + pages.json | 20 +- store/modules/app.js | 67 ++++- uni_modules/guyue-updater/assets/bg1.png | Bin 0 -> 34588 bytes uni_modules/guyue-updater/assets/bg2.png | Bin 0 -> 12855 bytes uni_modules/guyue-updater/assets/close.png | Bin 0 -> 1343 bytes uni_modules/guyue-updater/changelog.md | 6 + uni_modules/guyue-updater/index.js | 24 ++ uni_modules/guyue-updater/interface.ts | 12 + uni_modules/guyue-updater/package.json | 82 +++++ uni_modules/guyue-updater/pages/updater.vue | 315 ++++++++++++++++++++ uni_modules/guyue-updater/readme.md | 65 ++++ uni_modules/guyue-updater/updater.js | 31 ++ 13 files changed, 622 insertions(+), 2 deletions(-) create mode 100644 uni_modules/guyue-updater/assets/bg1.png create mode 100644 uni_modules/guyue-updater/assets/bg2.png create mode 100644 uni_modules/guyue-updater/assets/close.png create mode 100644 uni_modules/guyue-updater/changelog.md create mode 100644 uni_modules/guyue-updater/index.js create mode 100644 uni_modules/guyue-updater/interface.ts create mode 100644 uni_modules/guyue-updater/package.json create mode 100644 uni_modules/guyue-updater/pages/updater.vue create mode 100644 uni_modules/guyue-updater/readme.md create mode 100644 uni_modules/guyue-updater/updater.js diff --git a/App.vue b/App.vue index 08a81ad..fc58122 100644 --- a/App.vue +++ b/App.vue @@ -76,6 +76,8 @@ onLaunch: function(option) { this.globalData.statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px'; this.globalData.uid = this.$store.state.app.uid; + + this.$store.dispatch('INIT_CONFIG'); // #ifdef APP-PLUS //监听uni小程序发送的事件 diff --git a/pages.json b/pages.json index 45db4e9..a6f4b73 100644 --- a/pages.json +++ b/pages.json @@ -102,7 +102,25 @@ } } - ], + ,{ + "path": "uni_modules/guyue-updater/pages/updater", + "style": { + "app-plus": { + "animationDuration": 200, + "animationType": "fade-in", + "background": "transparent", + "backgroundColorTop": "transparent", + "bounce": "none", + "popGesture": "none", + "scrollIndicator": false, + "titleNView": false + }, + "backgroundColor": "transparent", + "disableScroll": true, + "navigationStyle": "custom" + } +} +], "subPackages": [{ "root": "pages/goods_cate", "name": "goods_cate", diff --git a/store/modules/app.js b/store/modules/app.js index 9c5e7c0..b0b862e 100644 --- a/store/modules/app.js +++ b/store/modules/app.js @@ -9,6 +9,9 @@ import Cache from '../../utils/cache'; import { USER_INFO } from '../../config/cache'; +// #ifdef APP-PLUS +import Updater from '@/uni_modules/guyue-updater/index'; +// #endif const state = { location: Cache.get('LOCATION_DATA', true) || {}, @@ -99,9 +102,71 @@ const actions = { }).catch(() => { }); - } + }, + async INIT_CONFIG({ state, commit }, data = false) { + // let res = await getConfig(); + let res = { + data: { + version: '1.2.1', + version_info: { + "id": 4, + "title": "正式IOS测试", + "content": "IOS正式", + "type": 1, + "version": "1.2.1", + "dow_url": "https://worker-task.lihaink.cn/uploads/files/20230908/20230908174409996e65763.wgt", + "force": 0, + "quiet": 0, + "create_time": "2023-09-04 15:28:29", + "update_time": "2023-09-04 15:28:29", + "delete_time": null + } + } + } + const wgt_v = uni.getStorageSync('wgt_version')||'1.0.0'; + // #ifdef APP-PLUS + let os = uni.getSystemInfoSync(); + if(data) uni.showLoading({ + title: '检查更新中' + }) + // 版本更新 + if(compareVersions(res.data.version, os.appVersion||wgt_v)==1&&compareVersions(res.data.version, wgt_v)==1){ + try{ + let info = res.data.version_info||{}; + let version = { + title: info.title||'发现新版本', + content: info.content||'修复了部分BUG', + versionName: info.version||'1.0.1', + downUrl: info.dow_url||'', + force: info.force==1?true:false, // 是否强制更新 + quiet: info.quiet==1?true:false // 是否静默更新 + } + Updater.update(version); + }catch(e){ + console.log(e); + } + if(data) uni.hideLoading(); + } + // #endif + } }; +function compareVersions(version1, version2) { + const arr1 = version1.split('.').map(Number); + const arr2 = version2.split('.').map(Number); + for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) { + const num1 = i < arr1.length ? arr1[i] : 0; + const num2 = i < arr2.length ? arr2[i] : 0; + + if (num1 > num2) { + return 1; + } else if (num1 < num2) { + return -1; + } + } + return 0; +} + export default { state, mutations, diff --git a/uni_modules/guyue-updater/assets/bg1.png b/uni_modules/guyue-updater/assets/bg1.png new file mode 100644 index 0000000000000000000000000000000000000000..5eef28ee4a639eda7c7975e0c87a18f3cb922040 GIT binary patch literal 34588 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 + + + + + + + {{ updateParams.title }} + V{{ updateParams.versionName }} + + 更新内容: + + + + + + + + + + {{ progress }}% + + + + + + + {{ downloadText }} + + + + + + + + + + + + + diff --git a/uni_modules/guyue-updater/readme.md b/uni_modules/guyue-updater/readme.md new file mode 100644 index 0000000..ccb2b01 --- /dev/null +++ b/uni_modules/guyue-updater/readme.md @@ -0,0 +1,65 @@ +# App热更新 + +App热更新模块,支持apk安装以及wgt升级,支持显示弹窗升级、静默更新以及强制更新,支持进度显示,支持覆盖原生tabbar、原生导航栏。 +可用于自建热更新渠道,不依赖于云服务,无云服务费用支出,也可以适配官方更新中心。 + +## 使用说明 +### 1.将此项目导入自己的项目工程 +### 2.在page.json中注册页面,如下 + ```javascript + { + "path": "uni_modules/guyue-updater/pages/updater", + "style": { + "navigationStyle": "custom", + "backgroundColor": "transparent", + "disableScroll": true, + "app-plus": { + "backgroundColorTop": "transparent", + "background": "transparent", + "scrollIndicator": false, + "titleNView": false, + "popGesture": "none", + "bounce": "none", + "animationType": "fade-in", + "animationDuration": 200 + } + } + } + ``` +### 3.将版本检测函数导入需要使用的页面 + 一般在App.vue中的onLaunch导入或者首页导入,需要自行完成热更新检查,一般在APP启动时发起一个请求获取热更新数据,数据获取后,可以调用该组件完成更新。 + ```javascript + import Updater from '@/uni_modules/guyue-updater/index'; + + // 仅在app平台有效,其他平台调用无效 + Updater.update({ + title: '发现新版本', + content: '1. 我们更新了新的UI设计\n2. 我们更新了新的UI设计\n3. 我们更新了新的UI设计\n4. 我们更新了新的UI设计\n', + versionName: '1.3.6', + downUrl: 'https://cdn.xxx.cn/mp/__UNI__1F29D65.wgt', + force: false, + }) + ``` +## 参数说明 +```javascript +export type UpdateParams = { + content: string; // 必填,更新内容,内容中使用 \n 进行换行 + downUrl: string; // 必填,wgt热更新请给出 .wgt 的文件地址,APK整包更新请设置下载apk地址,ios请设置苹果商店的连接地址; + title?: string; // 用于显示弹窗标题,默认 发现新版本 + versionName?: string; // 版本名,用于显示更新版本,如 1.0.0 + quiet?: boolean; // 是否是静默更新,开启后,不会有弹窗,会在后台下载更新文件,在下次启动APP时使用更新 + force?: boolean; // 是否是强制更新,开启后,弹窗无法被关闭,必须更新 + updateBtnText?: string; // 升级按钮文字,默认 立即升级 + downMsgTip?: string; // 仅android,默认 下载中,请稍后 + downSucTip?: string; // 仅android,默认 下载完成,安装中 + downErrorTip?: string; // 仅android,默认 下载失败,请重试 +} +``` + +## Android如何跳转到应用市场更新 + +downUrl 设置为应用市场的地址即可,如: market://details?id={这里写你的应用包名} + +## iOS 如何跳转到AppStore + +downUrl 设置为AppStore的地址即可,如: itms-apps://itunes.apple.com/cn/app/hello-uni-app/id1417078253 \ No newline at end of file diff --git a/uni_modules/guyue-updater/updater.js b/uni_modules/guyue-updater/updater.js new file mode 100644 index 0000000..fbdf8b6 --- /dev/null +++ b/uni_modules/guyue-updater/updater.js @@ -0,0 +1,31 @@ + +export const download = ({ url, onProgress, onSuccess, onFail }) => { + const task = uni.downloadFile({ + url, + success(res) { + if (res.statusCode === 200) { + onSuccess && onSuccess(res.tempFilePath); + } + }, + fail() { + onFail && onFail(); + } + }); + task.onProgressUpdate(res => { + onProgress && onProgress(res.progress); + }); +}; + +export const install = (filePath, restart = false, version='') => { + plus.runtime.install(filePath, { + force: true + }, () => { + console.log('install success...'); + if (restart) { + uni.setStorageSync('wgt_version', version); + plus.runtime.restart(); + } + }, (e) => { + console.error('install fail...', e); + }); +}; \ No newline at end of file