dcloud --app版本更新

2024-05-26 17:58
文章标签 app 更新 版本 dcloud

本文主要是介绍dcloud --app版本更新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

dcloud --app版本更新

1.app开发,最主要的一个功能就是版本更新,其实原理很简单,下载最新版本,然后自动打开app,重新安装!

2.提供的实例代码中,存在 update.js这个文件,也许它可以做到更新,不过,本人没用她提供的,自己写了一套,后台代码就不上了,这个其实就是文件下载的功能,意义不大,以下是部分代码
 OutputStream os = null;
        BufferedOutputStream bos = null;
        FileInputStream fis = null;
        BufferedInputStream bis = null;
        try {
            String fileName = String.format("%s%s%s", apkInfo.getTitle(), ".", apkInfo.getExt());
            response.setHeader("conent-type", "application/vnd.android.package-archive");
            response.setContentType("application/vnd.android.package-archive");
            response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));


            File apkFile = new File(apkInfo.getFileUrl());
            if (!apkFile.exists()) {
                return;
            }
            long fileLength = apkFile.length();
            response.setHeader("Content-Length", String.valueOf(fileLength));


            os = response.getOutputStream();
            bos = new BufferedOutputStream(os);
            fis = new FileInputStream(apkFile);
            bis = new BufferedInputStream(fis);


            byte[] buffer = new byte[1 * 1024 * 10];
            int len = 0;
            while ((len = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, len); // 写入
                bos.flush();
            }
            if (os != null) {
                os.close();
            }
            if (bos != null) {
                bos.close();
            }
            if (fis != null) {
                fis.close();
            }
            if (bis != null) {
                bis.close();
            }
,关键是前台怎么操作。

首先,我们需要校验一下版本,是否是最新版本,代码如下:
var wgtVer=null;
function plusReady(){
// 获取本地应用资源版本号
    plus.runtime.getProperty(plus.runtime.appid,function(inf){
        wgtVer=inf.version;
        //赋值
document.getElementById("nversion").innerHTML="V"+wgtVer;
    });
//得到系统内最新版本信息
var verserver=$app_api_url.findVersion();  //后台代码地址(校验版本号的)
mui.getJSON(verserver, {
"appid": plus.runtime.appid     //这个自己去看 mainfest.json
}, function(data) {
if (data.succeed) {
if(wgtVer!=data.data){
var inwebview = plus.webview.getWebviewById('index');
inwebview.evalJS("showredpoint(true)");
document.getElementById("nversion").innerHTML="V"+wgtVer+"<sup>●</sup>"; 
}
}else{

}
});
}
<sup>●</sup>,这个,我觉得会html的人,应该都要知道,不做解释,inwebview.evalJS,这个其实就是js方法,我这里实现的是,有新版的时候,打一个红色的标记,
//坐标显示红点
function showredpoint(ob){
if(ob==true){
document.getElementById('point').classList.remove("mui-hidden");
}else{
document.getElementById('point').classList.add("mui-hidden");
}
}

以下代码是下载更新的代码
var server = $app_api_url.apkCheck(); //获取升级描述文件服务器地址
var dserver=$app_api_url.apkDownload();//apk 下载


function update() {
mui.getJSON(server, {
"appid": plus.runtime.appid,
"version": wgtVer,
"imei": plus.device.imei
}, function(data) {
if (data.succeed) {
if(data.data==false){
plus.nativeUI.confirm("消息", function(event) {
if (0 == event.index) {
downWgt(plus.runtime.appid);
}
}, data.title, ["立即更新", "取  消"]);
}else{
plus.nativeUI.alert("最新版本");
}
}else{
plus.nativeUI.alert("版本校验失败");
}
});
}

function downWgt(ob){
var wgtUrl=dserver+"?appid="+ob;
    plus.nativeUI.showWaiting("下载更新包...");
    plus.downloader.createDownload( wgtUrl, {method: "GET",filename:"_doc/update/",retry: 0}, function(d,status){
        if ( status == 200 ) { 
            console.log("下载wgt成功:"+d.filename);
            plus.runtime.openFile(d.filename);//打开安装包
        } else {
            console.log("下载wgt失败!");
            plus.nativeUI.alert("下载wgt失败!");
        }
        plus.nativeUI.closeWaiting();
    }).start();
}

plus.downloader.createDownload( ),这个函数,大家自己搜索一下,我只简单的解释一下,wgtUrl,下载的路径,get方式访问,filename 表示文件下载到本手机的路径,plus.runtime.openFile(),该方法表示下载完成后自动打开app,实现安装。

如果大家感兴趣,或者想一起探讨学习的,请加一下这个QQ群, 488505459,谢谢!

这篇关于dcloud --app版本更新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1005180

相关文章

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)

《JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)》本文介绍了如何在Windows系统上配置多版本JDK(以JDK8和JDK17为例),并通过图文结合的方式给大家讲解了详细步骤,具有... 目录第一步 下载安装JDK第二步 配置环境变量第三步 切换JDK版本并验证可能遇到的问题前提:公司常

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Mybatis从3.4.0版本到3.5.7版本的迭代方法实现

《Mybatis从3.4.0版本到3.5.7版本的迭代方法实现》本文主要介绍了Mybatis从3.4.0版本到3.5.7版本的迭代方法实现,包括主要的功能增强、不兼容的更改和修复的错误,具有一定的参考... 目录一、3.4.01、主要的功能增强2、selectCursor example3、不兼容的更改二、

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对