Pārlūkot izejas kodu

增加个简单的app更新机制

yangzm123 10 mēneši atpakaļ
vecāks
revīzija
b9a5f7ecfe
3 mainītis faili ar 49 papildinājumiem un 4 dzēšanām
  1. 5 1
      src/pages/index/index.vue
  2. 4 2
      src/subpkg/setting/version.vue
  3. 40 1
      src/utils/utils.js

+ 5 - 1
src/pages/index/index.vue

@@ -2,7 +2,7 @@
  * @Author: PoJun
  * @Date: 2023-05-15 19:59:55
  * @LastEditors: PoJun
- * @LastEditTime: 2024-04-28 22:14:52
+ * @LastEditTime: 2024-05-09 20:56:10
  * @Message: Nothing
 -->
 <template>
@@ -55,6 +55,7 @@
 </template>
 
 <script>
+import { checkAppUpdate } from "@/utils/utils.js";
 import supplierList from "./components/supplier-list.vue";
 import homeChart from "./components/home-chart.vue";
 import recordsList from "./components/records-list.vue";
@@ -77,6 +78,9 @@ export default {
             times: 0, //图形的渲染有时候会出问题.
         };
     },
+    onLoad() {
+        checkAppUpdate();
+    },
     onShow() {
         this.times++;
     },

+ 4 - 2
src/subpkg/setting/version.vue

@@ -2,7 +2,7 @@
  * @Author: PoJun
  * @Date: 2023-09-28 10:38:11
  * @LastEditors: PoJun
- * @LastEditTime: 2023-12-28 18:00:19
+ * @LastEditTime: 2024-05-09 20:59:09
  * @Message: 版本查看
 -->
 <template>
@@ -26,6 +26,8 @@
 </template>
 
 <script>
+import { checkAppUpdate } from "@/utils/utils.js";
+
 export default {
     data() {
         return {
@@ -37,7 +39,7 @@ export default {
     },
     methods: {
         checkVersion() {
-            uni.$uv.toast("已是最新版本");
+            checkAppUpdate(true);
         },
     },
 };

+ 40 - 1
src/utils/utils.js

@@ -2,12 +2,13 @@
  * @Author: PoJun
  * @Date: 2023-12-14 15:56:24
  * @LastEditors: PoJun
- * @LastEditTime: 2024-03-04 18:40:48
+ * @LastEditTime: 2024-05-09 20:58:45
  * @Message: Nothing
  */
 export const logoutApp = async vm => {
     // 退出设备
     try {
+        // 消息相关先注释掉
         // #ifdef APP-PLUS
         // await uni.$uv.http.get("/system_ext/user/client_info", { custom: { toast: false } });
         // #endif
@@ -21,3 +22,41 @@ export const logoutApp = async vm => {
         console.log(error);
     }
 };
+
+export const checkAppUpdate = async needToast => {
+    try {
+        const sysInfo = uni.getSystemInfoSync();
+        const res = await uni.request({
+            url: "https://www.pgyer.com/apiv2/app/check",
+            data: {
+                appKey: "145b8b88437f52fc04ec8409c2d2c2b6",
+                _api_key: "d6e02150ac8f6289081185e041137f7d", // 蒲公英账号私人key
+            },
+        });
+        if (res.statusCode === 200) {
+            const latestVersionInfo = res.data?.data || {};
+            const currentVersion = sysInfo.appVersion;
+
+            if (latestVersionInfo.buildVersion !== currentVersion) {
+                // 有新版本,提示用户更新
+                uni.showModal({
+                    title: "发现新版本",
+                    content: `最新版本:${latestVersionInfo.buildVersion},更新内容:${latestVersionInfo.buildUpdateDescription}`,
+                    confirmText: "立即更新",
+                    success: async modalRes => {
+                        if (modalRes.confirm) {
+                            // 打开蒲公英的下载链接
+                            plus.runtime.openURL(latestVersionInfo.downloadURL);
+                        }
+                    },
+                });
+            } else {
+                if (needToast) {
+                    uni.showToast({ title: "当前已是最新版本!", icon: "none" });
+                }
+            }
+        }
+    } catch (error) {
+        console.error("检查更新失败", error);
+    }
+};