云迈博客

您现在的位置是:首页 > 前端技术 > uni-app > 正文

uni-app

uniapp安卓端应用内更新方案

黄蓉蓉2022-02-28uni-app358
一、实现思路在进入app的时候,通过当前应用版本号与远程版本号比较判断是否有新版本,若有新版本则提示并下载新版本,若没有则进入首页。˃本文主要探究如何渐进式的整合更新功能,引入更新功能不改变原有页

一、实现思路

在进入app的时候,通过当前应用版本号与远程版本号比较判断是否有新版本,若有新版本则提示并下载新版本,若没有则进入首页。

本文主要探究如何渐进式的整合更新功能,引入更新功能不改变原有页面逻辑

二、实现效果

更新提示

下载界面

三、实现步骤

1. 编写远程版本信息

<?php
function  response($data = array(), $code = 0)
{
  $arr['code'] = $code;
  $arr['data'] = $data;
  header('Content-Type: application/json; charset=utf-8');
  return json_encode($arr);
}
// app 为 get或post请求的参数
$app = $_REQUEST['app_name'];
$data = array();
//version_name版本必须为00.00.00格式
if($app == 'demo'){
  $data['check_version'] = true; //是否开启软件更新检测
  $data['version_name'] = '1.0.19';//当前安卓版本名称
  $data['version_code'] = 19;//当前安卓版本号
  $data['version_tips'] = ['新增版本更新功能','修复已知问题'];//当前安卓版本号
  $data['resource_url'] = "http://hxng.yunmell.com/app/package/app19.apk";//app主运行嵌套网址
}

exit(response($data));

2. 新增下载更新页面

http://git.yunmell.com:9898/Herrona/uniapp-modules.git
复制/pages/version_up文件夹到项目,并复制/pages.json里的页面路由

3. 编写版本处理js文件,例如/common/version.js

http://git.yunmell.com:9898/Herrona/uniapp-modules.git
复制/common/version.js文件到项目,并修改接口地址和应用名称
let url = ‘http://hxng.yunmell.com/app/version.php' //版本判断请求接口
let app_name = ‘demo’ //应用名字 需要与verison.php接口中的对应

4. 在App.vue里

<script>
    import { checkVersion, versionResolve } from "@/common/version.js"

    export default {
        async onLaunch() {
            if(uni.getSystemInfoSync().platform == 'android'){
                await this.checkVersion()
            }
        },

        methods: {

            async checkVersion(){
                const hasNewVersion = await checkVersion()
                console.log("是否有新版本", hasNewVersion)
                if(hasNewVersion){
                    uni.reLaunch({
                        url: "/pages/version_up/version_up",
                    })
                }else{
                    versionResolve()
                }
            },

        },

    }
</script>

5. 在app入口页面

    import { versionPromise } from "@/common/version.js"

    async onLoad() {
        if(uni.getSystemInfoSync().platform == 'android'){
            await versionPromise //等待版本更新判断完成再往后执行
        }
    }

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~