UzumakiItachi
首页
  • JavaSript
  • Vue

    • Vue2
    • Vue3
  • React

    • React_18
  • WebPack
  • 浏览器相关
  • 工程化相关
  • 工作中遇到的问题以及解决方案
  • Git
  • 面试
  • 学习
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 个人产出
  • 实用工具
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

UzumakiItachi

起风了,唯有努力生存。
首页
  • JavaSript
  • Vue

    • Vue2
    • Vue3
  • React

    • React_18
  • WebPack
  • 浏览器相关
  • 工程化相关
  • 工作中遇到的问题以及解决方案
  • Git
  • 面试
  • 学习
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 个人产出
  • 实用工具
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • WebPack

  • 浏览器相关

  • 工程化相关

  • 工作中遇到的问题以及解决方案

    • 解决浏览器返回页面不刷新的问题
    • 前端如何下载文件流
    • uniapp APP端实现更新最新安装包
    • GitHub Actions Process completed with exit code 128 的解决方案
    • 保留文字输入的空格和换行
    • 缩放适配大屏页
    • 一次性加载n多张图片的性能优化方案
    • NOT-Cool 低代码页面架构思路
    • h5下载vcard快捷保存联系人信息
    • 结合elementui实现的动态主题
    • 解决monorepo场景下子包作为依赖项在开发和生产暴露文件的问题
    • 给npm配置github令牌
    • 移动端电子印章解决方案
    • 小程序canvas绘制海报中遇到的一些坑
    • 超详细的虚拟列表实现过程
    • 小程序实现一个事件中心
    • 请求超时后如何优雅的重新请求
    • 超详细的大文件上传实现方案
    • 仿抖音短视频组件实现方案
    • swiper渲染大量数据的优化方案
    • 前端检测更新,自动刷新网页
  • Git

  • Vite

  • 一些小工具

  • 算法

  • 服务器

  • HTTP

  • 技术
  • 工作中遇到的问题以及解决方案
hanhanbuku
2023-03-03

uniapp APP端实现更新最新安装包

onLaunch: function() {
            let appVersion = ''
            uni.getSystemInfo({
                success: function(e) {
                    appVersion = e.platform
                }
            })
            let that = this
            plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
                that.$http({
                    url: '/API_AUTH/AppInterface/getAppversion'
                }).then(res => {
                    if (parseInt(res.data.bbh) > parseInt(wgtinfo.versionCode)) {
                        uni.showModal({
                            title: "版本更新",
                            content: '检测到有新版本,是否更新', //更新描述
                            confirmText: '立即更新',
                            cancelText: '稍后进行',
                            success: (r) => {
                                if (r.confirm) {
                                    //如果是安卓直接更新下载
                                    if (appVersion === 'android') {
                                        uni.showLoading({
                                            title: '正在下载,请稍后'
                                        })
                                        uni.downloadFile({
                                            //下载地址
                                            url: encodeURI(res.data.webPath + res
                                                .data
                                                .bbdz),
                                            success: data => {
                                                uni.hideLoading()
                                                if (data.statusCode === 200) {
                                                    plus.runtime.install(data
                                                        .tempFilePath, {
                                                            force: false
                                                        },
                                                        function() {
                                                            plus.runtime
                                                                .restart();
                                                        });
                                                }
                                            },
                                            fail(err) {
                                                uni.showToast({
                                                    title: '下载失败,请重启APP。'
                                                })
                                            },
                                        })
                                        //如果是ios跳转到app store
                                    } else {
                                        //在App Store Connect中的App Store下的app信息,可找到appleId
                                        let appleId = plus.runtime.appid
                                        plus.runtime.launchApplication({
                                            action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`
                                        }, function(e) {
                                            uni.showToast({
                                                title: '打开应用商店失败'
                                            })
                                            console.log(
                                                '打开应用商店失败: ' +
                                                e.message);
                                        });
                                    }
                                } else if (res.cancel) {
                                    console.log('用户点击取消');
                                }
                            }
                        })
                    }
                })
            })
            console.log('App Launch')
        },
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

image

这个版本号就是wgtinfo.versionCode拿到的版本号,记得每次更新之后都更改。要不然就没法做到热更新。

原理很简单,就是获取当前app的版本号,然后每次进app的时候都调一个接口比对当前app版本号和线上最新版本号是否一致,如果线上最新版本号大于当前版本号则下载最新的apk然后自动安装。

编辑 (opens new window)
上次更新: 2023/03/08, 09:35:38
前端如何下载文件流
GitHub Actions Process completed with exit code 128 的解决方案

← 前端如何下载文件流 GitHub Actions Process completed with exit code 128 的解决方案→

最近更新
01
前端检测更新,自动刷新网页
06-09
02
swiper渲染大量数据的优化方案
06-06
03
仿抖音短视频组件实现方案
02-28
更多文章>
Theme by Vdoing | Copyright © 2023-2025 UzumakiItachi | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式