H5+app -- 自动更新

article/2025/9/24 20:07:20

  一、最近做了一个app自动更新功能,用的基本都是网上找得到的。

    1、h5+ 规范 :  http://www.html5plus.org/doc/zh_cn/maps.html

    2、环形进度条插件:http://www.jq22.com/jquery-info4495(不知道什么原因,下载的时候,没有显示任何提示,所以人为加个下载的提示)

  二、本来用的mui框架也有进度条提示,但是好单调,又不显眼。

    1、效果如下,虽然说超方便的。mui 样式:http://dev.dcloud.net.cn/mui/ui/#progressbar,html这里就不整理了,链接里有。

    2、右边为 ‘环形进度条插件’的效果

    

 

  三、下面不多说,po上代码

    1、html代码

     <!-- lyj 圆形插件 --><link href="css/progressbar-css/base.css" rel="stylesheet" type="text/css" /><link href="css/progressbar-css/project_base.css" rel="stylesheet" type="text/css" /><link href="css/progressbar-css/radialindicator.css" rel="stylesheet" type="text/css" /><style type="text/css">.htmleaf-icon {color: #fff;}.showOrHidden {display: none;   /*未进行下载更新前隐藏*/}</style><!-- 圆形进度条插件 -->
    
     <!-- html --><h3 id="download-title" class="showOrHidden" style="float: left; position: absolute; top: 55%; left: 33%; color: green;">App下载中...</h3><div class="prg-cont rad-prg showOrHidden" id="indicatorContainer" style="float: left; position: absolute; top: 66%; left: 33%;"></div> 

  <!-- html -->
     <script src="js/mui.js"></script><script src="js/jquery.min.js"></script><!-- lyj 圆形插件 --><script type="text/javascript" src="js/progressbar/base.js"></script><script type="text/javascript" src="js/progressbar/project_base.js"></script><script>SyntaxHighlighter.defaults['toolbar'] = false;SyntaxHighlighter.all();</script><script src="js/progressbar/radialindicator.js"></script>

    2.1、环形进度条 js

       var appTotalSize; //将要下载的app的大小$('#indicatorContainer').radialIndicator({barColor: '#FFA500',  //颜色,16进制barWidth: 10,      //宽度initValue: 0,         //初始值roundCorner: true,percentage: true});
       //动态set值
var radialObj = $('#indicatorContainer').data('radialIndicator');

    2.2、自动更新 js

      function updateApp() {plus.runtime.getProperty(plus.runtime.appid, function(inf) {//获取app的版本信息var ver = inf.version;//接口地址var url = $config.IP + '【你请求接口的地址】';var ua = navigator.userAgent.toLowerCase(); //判断浏览器类型if(/iphone|ipad|ipod/.test(ua)) { //苹果(暂无)            
                        $.ajax({type: "get",dataType: 'json',url: "https://itunes.apple.com/lookup?id=111030274", //获取当前上架APPStore版本信息
                            data: {id: 111030274 //APP唯一标识ID
                            },contentType: 'application/x-www-form-urlencoded;charset=UTF-8',success: function(data) {console.log("jsjsjsjs" + json2string(data));$.each(data, function(i, norms) {$.each(norms, function(key, value) {$.each(value, function(j, normItem) {if(j == "version") {if(normItem > ver) {alert("发现新版本:V" + normItem);document.location.href = 'https://itunes.apple.com/cn/app/san-gu-hui/id111030274?mt=8'; //上新APPStore下载地址
                                                }}});});});return;}});} else if(/android/.test(ua)) {//获取远程数据库中上新andriod版本号
                        mui.ajax(url, {data: {apkVersion: ver,},dataType: 'json',type: 'GET',timeout: 6000,success: function(data) {//比较版本信息if(data.map.appVersion != ver) {var btnArray = ['暂不更新', '立即更新'];mui.confirm("发现新版本:V" + data.map.appVersion + ",是否立即更新安装?", '发现新版本', btnArray, function(e) {if(e.index == 1) {//显示环形进度条$('#indicatorContainer').removeClass('showOrHidden');$('#download-title').removeClass('showOrHidden');//返回的app总大小appTotalSize = data.map.totalSize;mui.toast('版本更新中...');//创建更新var dtask = plus.downloader.createDownload(【下载app的地址的目录】, {method: "POST",data: data.map.fileName,  //要下载的apk文件名}, function(d, status) {if(status == 200) {sleep(300);var path = d.filename; //下载apk
//                                                    console.log(path);plus.runtime.install(path); // 自动安装apk文件} else {alert('版本更新失败:' + status);}});//为下载添加监听事件dtask.addEventListener("statechanged", onStateChanged, true);//为下载添加请求头dtask.setRequestHeader('Content-Type', 'application/json'); // 设置POST请求提交的数据类型为JSON字符串
                                            dtask.start();}});} else {console.log('当前版本号已是最新');return;}},error: function(xhr, type, errerThrown) {//mui.toast('网络异常,请稍候再试');
                            }});}});function onStateChanged(download, status) {var i = download.downloadedSize;//换算成百分比i *= 100 / appTotalSize;  
                    radialObj.animate(i);    //显示部分的不足,就是网速差的情况会出现进度条的数值与实际有差别,网速差,怪我咯。if(download.state == 4 && status == 200) {// 下载完成 $('#indicatorContainer').addClass('showOrHidden');$('#download-title').addClass('showOrHidden');}}}

   四、如果想做简单点的,可以采用mui框架的进度条

    1、将html部分改为

<div id="progressbar" class="mui-progressbar showOrHidden" ><span></span>
</div>

    2、js的 onStateChanged 方法修改  

$('#progressbar').removeClass('showOrHidden');
function onStateChanged(download, status) {var i = download.downloadedSize;//换算成百分比i *= 100 / appTotalSize;  mui('body').progressbar({progress: i}).show();radialObj.animate(i);if(download.state == 4 && status == 200) {// 下载完成 $('#progressbar').addClass('showOrHidden');}}

  五、最后,我不知道怎么处理安装后的apk安装包,有没有大神告知,如何处理安装完后的apk安装包?

 

转载于:https://www.cnblogs.com/lrj1009IRET/p/10087425.html


http://chatgpt.dhexx.cn/article/Gbn0Msen.shtml

相关文章

html5页面和app的区别,H5页面与APP区别何在

APP相信大家都非常熟悉&#xff0c;就是手机里经常安装的软件程序&#xff0c;它都需要经过下载安装的步骤才能打开产品进行操作。不过H5页面和APP却有比较大的区别&#xff0c;它不需要经过下载安装&#xff0c;直接能够在浏览器和微信等社交平台中打开操作。 APP的制作一般都…

uni-app消息推送功能实现

1&#xff0c;首先可以简单的看一下HTML5 API文档了解一下对应的方法 HTML5API&#xff1a;https://www.html5plus.org/doc/zh_cn/push.html#plus.push.MessageOptions 2&#xff0c;先在manifest.json勾选一下Push推送 3&#xff0c; 需要配置一下并传给后端 4&#xff0c;可…

H5+app 安卓原生插件开发

目录 1、参考文档 2、离线打包操作步骤 1、下载SDK 2.打开android studio导入项目 3.修改相关参数 1.修改AndroidManifest.xml文件 2.修改dcloud_control.xml文件 3.修改strings.xml 4.修改build.gradle 4.运行 3原生拓展 1.java原生代码编写 2.配置文件 1.修改dcl…

html5怎么制作app页面,玩转HTML5移动APP页面(动效篇)

作为一名前端&#xff0c;在拿到设计稿时你有两种选择&#xff1a; 加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有志向的前端&#xff0c;当然是选2啦&#xff01;可是需求时间又很短很短&#xff0c;怎么办呢&#xff1f; 这次就来谈谈一些动画设计的小技巧…

h5+hbuilder 制作手机app

Hbuilderx 下载地址 https://www.dcloud.io/hbuilderx.html 1.依次点击左上角 文件→ 新建→ 项目&#xff0c;会出现下面的界面。 2. index.html &#xff08;当然&#xff0c;引入的jq.js需要放到项目中&#xff09; <!DOCTYPE html> <html> <head><me…

Verilog带参数的`define用法

宏除了可以进行简单的文本替换,还可以像函数和任务一样传递指定多个参数分别对文本进行对应的替换. 示例1&#xff1a; define Disp(pa,pb,pc) \initial \begin \#1200; \$display("%d \n",(papbpc)); \$display(" data_ pa data_ pb data_ pc %d",(…

C语言中define的用法

define顾名思义&#xff0c;就是下定义&#xff0c;那么在C中它也发挥着下定义的作用。 1.提前定义变量 #include<stdio.h> #define N 100 int main() {int a10;printf("%d",Na);return 0; } 这个过程中N是100。 这个意思是提前定义N100&#xff0c;且这个…

C语言define高级用法大全

今天在看代码时&#xff0c;突然发现很多define的用法看不懂&#xff0c;故在此总结一下&#xff0c;顺便吐槽一下&#xff0c;C语言的宏复杂起来真的很难看懂。 不信的去看下这个的源码&#xff1a;【C语言开源库】lw_oopc&#xff1a;轻量级的C语言面向对象编程框架 一、宏…

Oracle基础之define用法简介教程

继上一篇博客Oracle绑定变量学习笔记&#xff0c;再写一篇define变量的简单教程 文章目录 1、define常量用法2、&和&&符号用法 1、define常量用法 注意&#xff1a;define常被误解为定义变量&#xff0c;其实不然&#xff0c;define定义的是字符常量&#xff0c;d…

#define的使用

目录 前言 1. #define定义标识符 2. #define定义宏 3. #define 替换规则 4. 宏和函数对比 前言 在很多C程序中&#xff0c;我们会在一个源文件的开头看到 #define 的字眼&#xff0c;和define的英文解释相同——可以理解为给xxx下定义&#xff0c;这里可以是标识符甚至是…

#define 的使用

#define 多数情况下我们是用来定义宏的&#xff0c;但是实际上&#xff0c;#define 作为预处理指令&#xff0c;也可以用来定义标识符&#xff0c;类似于 typedef&#xff0c;但是其本质和 typedef 是不同的。 目录 一、#define 定义标识符 1、定义和使用 2、#define 定义标…

C语言之#define用法入门详解

一、#define的基本语法 在C语言中&#xff0c;常量是使用频率很高的一个量。常量是指在程序运行过程中&#xff0c;其值不能被改变的量。常量常使用#define来定义。 使用#define定义的常量也称为符号常量&#xff0c;可以提高程序的运行效率。 其常见的用法包括两种&#xff0…

python微信聊天机器人_Python搭建一个微信聊天机器人

前言 因为班群里总是挺静的&#xff0c;所以想着要不放个机器人试试能不能活跃活跃气氛&#xff0c;然后就begin网上查阅资料试着建立个机器人。 语言环境开发环境&#xff1a;Ubuntu16.04 编程语言&#xff1a;Python2.7 步骤第一步&#xff1a;首先安装python2.7语言 su…

Python大佬用20行代码带你打造一个微信聊天机器人(附代码)

近来&#xff0c;打开微信群发消息&#xff0c;就会秒收到一些活跃分子的回复&#xff0c;有的时候感觉对方回答很在理&#xff0c;但是有的时候发现对方的回答其实是驴唇不对马嘴&#xff0c;仔细深究发现&#xff0c;原来对方是机器人。今天&#xff0c;小编就带大家用20行代…

16行代码实现微信聊天机器人,自动智能回复,打团了让它来陪老婆聊天

在我们的生活和工作当中,很多时候我们并不能及时地回复消息,尤其是业务比较多的人,客户给我们发消息我们不回又不好,但又没有那么多精力时时回复,这个时候智能机器人就能帮助我们解决很多问题。 像电商类的客服,像大的QQ群/微信群管理员,以及我们打游戏的时候,挂着脚本…

利用python实现微信聊天机器人(需自己设置关键字及回复内容)

本人为python小白写此帖纪念用python写的第一个脚本 微信聊天机器人 1、通过查找截图进行鼠标点击操作 2、通过直接输入屏幕中的坐标进行鼠标点击操作&#xff08;在复制他人最新信息时采用指定坐标双击&#xff09; # 双击并复制信息 pyautogui.doubleClick(394,…

php个人微信聊天机器人,wxpy将个人微信号变成微信聊天机器人

一、实验环境&#xff1a;win10 python3 wxpy 微信版本&#xff1a;6.6.5 1.1、从官网下载python最新版本并进行安装。 1.2、进入python安装目录Scripts/文件夹下&#xff0c;使用easy_install.exe pip 命令安装pip 1.3、使用pip install wxpy 命令安装wxpy 二、源码文件demo…

一个15分钟的视频,教你用Python创建自己的微信聊天机器人文中赠送全部源代码

你好&#xff0c;我是程序员晚枫。 在社区交流群&#xff08;&#x1f449;传送门&#xff09;里的朋友都知道&#xff0c;社区有一个智能聊天机器人&#xff1a; 1、24小时在线的智能客服&#xff0c; 2、根据大家的提问&#xff0c;自动回复对应的学习资料&#xff0c; 3、对…

微信聊天机器人

做一个微信聊天自动回复的机器人 # -*- coding: utf-8 -*- """ Created on Tue Jun 4 18:30:39 2019author: yyp """#-*- coding:utf-8 -*- import itchat import requestsdef get_response(msg):apiurl http://i.itpk.cn/api.php #//moli机器…

Python Wechaty 微信聊天机器人 padlocal协议搭建指南

python版本推荐3.9 微信机器人框架&#xff1a;Wechaty Python-Wechaty中文手册 开发前需要准备&#xff1a; Linux服务器&#xff08;CentOS 8.0&#xff0c;Python环境&#xff0c;Docker&#xff09;本地Python开发环境&#xff08;我个人使用VSCode&#xff09;申请一个…