VueApp 自动更新解决plus is not defined问题
一,今天用VueApp 做自动更新调用按照网上列子直接 Plus 打包编译后出现了plus is not defined
发现需要引用document.addEventListener("plusready",function(){})
代码如下
- <script>
- export default {
- name: "looklive",
- components: {
- // eslint-disable-next-line vue/no-unused-components
- headcontrol,
- },
- data() {
- return {
- path: "",
- installFlag: false,
- };
- },
- mounted() {
- //自动更新
- this.getNativeVersion();
- },
- methods: {
- // 获取当前版本号
- getNativeVersion() {
- let that = this;
- document.addEventListener("plusready", function () {
- plus.runtime.getProperty(plus.runtime.appid, function (inf) {
- that.nativeVersion = inf.version;
- that.checkUpdate(inf.version);
- localStorage.setItem("nativeVersion", inf.version);
- });
- });
- },
- // 检查更新
- checkUpdate(nativeVersion) {
- let that = this;
- const checkUrl = "http://119.23.211.81:8000/api/ip/GetAppVersion";
- that.axios.get(checkUrl).then((result) => {
- // alert("服务区版本" + result.data.version);
- //alert(nativeVersion);
- if (!that.VersionContrast(nativeVersion, result.data.version))
- that.downloadApk(result.data.url);
- });
- },
- //版本号对比
- VersionContrast(curV, reqV) {
- // 当前版本号:curV;比较版本号:reqV
- if (curV && reqV) {
- let arr1 = curV.split("."),
- arr2 = reqV.split(".");
- let minLength = Math.min(arr1.length, arr2.length),
- position = 0,
- diff = 0;
- //依次比较版本号每一位大小,当对比得出结果后跳出循环(后文有简单介绍)
- while (
- position < minLength &&
- (diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0
- ) {
- position++;
- }
- diff = diff != 0 ? diff : arr1.length - arr2.length;
- //若curV大于reqV,则返回true
- return diff >= 0;
- }
- },
- // 下载apk文件
- downloadApk(url) {
- let that = this;
- let watiting = plus.nativeUI.showWaiting("安装文件...");
- let dtask = plus.downloader.createDownload(url, {
- method: "GET",
- retry: 0,
- });
- dtask.addEventListener(
- "statechanged",
- function (task, status) {
- if (!dtask) {
- return;
- }
- switch (task.state) {
- case 1:
- break;
- case 2:
- break;
- case 3:
- var nowData = Math.floor(
- (task.downloadedSize * 100) / task.totalSize
- );
- console.log(nowData);
- if (nowData % 10 === 0) {
- watiting.setTitle("已下载:" + nowData + "%");
- if (nowData === 100) {
- watiting.toast("正在准备环境,请稍后!");
- watiting.close();
- }
- }
- break;
- case 4:
- // 安装apk资源包
- plus.runtime.install(
- dtask.filename,
- {},
- function () {
- plus.nativeUI.closeWaiting();
- plus.nativeUI.alert("更新完成!", function () {
- // 更新完成后重启应用
- plus.runtime.restart();
- });
- },
- function (e) {
- plus.nativeUI.closeWaiting();
- plus.nativeUI.toast("安装更新失败!");
- }
- );
- break;
- default:
- break;
- }
- },
- false
- );
- dtask.setRequestHeader("Access-Control-Allow-Origin", "*");
- dtask.start();
- },
- },
- };
- </script>
效果如下
VueApp 自动更新解决plus is not defined问题的更多相关文章
- Altium Designer自动更新——解决方法
今天,打开AD,一直显示更新,关机重启也不管事. 然后,我把AD安装目录下,system文件夹下的Installation文件夹删了.就不再更新了.
- tk.mybatis通用插件updateByPrimaryKeySelective无法自动更新ON UPDATE CURRENT_TIMESTAMP列的解决办法
tk.mybatis是一个很好用的通用插件,把CRUD这些基本的数据操作全都用动态SQL语句自动生成了,mapper和xml里十分清爽,但是昨天发现有一个小坑,记录在此: 有一张表,结构如下(已经简化 ...
- js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();)
js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();) ...
- 解决Debina系统自动更新软件包的问题
不知从何时开始,我的电脑每天开机连接上网络之后,不断的在下载数据,状态栏显示网速达到每秒1到2兆.开始我还不太在意,不过后来由于带宽全部被这种莫名其奥妙的下载占据了,我连网页都无否正常浏览了,所以我决 ...
- 解决Intellij Idea下修改jsp页面不自动更新
解决Intellij Idea下修改jsp页面不自动更新 On frame deactivation:被设置成了Do nothing 解决办法:改为Update resources(更新资源)或者Up ...
- 关闭win10 自动更新 及蓝屏解决办法
"控制面板-管理工具-服务"(或在"此电脑"鼠标右键,点击"管理"),找到Windows Update项目后,将"启动类型&quo ...
- 解析大型.NET ERP系统 自动更新
C/S架构的应用程序需要支持自动更新功能,当新版本程序发布后,正在运行的客户端能检测到新版本的程序,通知用户是否下载更新.工作以来参与过几个自动更新模块的设计与维护,撰文总结自动更新模块设计与实现. ...
- QML 从无到有 3 (自动更新)
新的需求出来啦,需要自动更新功能,不怕程序升级了. 自动更新,QML不好写,需要c++来辅助,这里就涉及QML中调用c++功能(这里就不写了,百度一下,很多). 思路:获取版本>下载程序> ...
- 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新
源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...
随机推荐
- 【玩转 WordPress】基于 Serverless 搭建个人博客图文教程,学生党首选!
以下内容来自「玩转腾讯云」用户原创文章,已获得授权. 01. 什么是 Serverless? 1. Serverless 官方定义 Serverless 中的 Server是服务器的意思,less 是 ...
- 【转载】Nginx多服务绑定80端口及映射域名
多服务绑定80端口及映射域名 说明:业务需要配置的样例模板,如需深入了解,请查看官方文档 1.Nginx配置文件nginx.conf(可拆分多台机器部署) worker_processes 1; e ...
- SpringBoot:SpringCloud与SpringBoot兼容版本参(其它组件兼容情况)
SpringCloud --- Springboot 版本兼容 SpringCloud SpringBoot Edgware.SR5 >=1.5.0.RELEASE and <=1.5.2 ...
- Mysql/Oracle/达梦中数据字典表
在mysql中,数据字典表存放在information_schema库中,,对应的两张表,分别是TABLES,和COLUMNS. 在oracle中有表空间(即用户空间或者库)和模式的概念.模式和表空间 ...
- Js中的防抖与节流函数
1.何为防抖与节流函数呢? 1.防抖(debounce):通过setTimeout方式,在一定的时间间隔内,将多次触发的事件转化为一次触发.也就是说当一个用户一直触发这个函数,且每次触发函数的间隔小于 ...
- Gauge自动化测试框架的安装和入门
- HCNA Routing&Switching之动态路由协议OSPF建立邻居的条件
前文我们了解了OSPF的router id.数据包结构.类型.不同类型的数据包作用以及OSPF状态机制,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15027 ...
- WLS中Linux与Windows间的环境共享
Reference 更多cmd.exe帮助参考 (cmd_helps)[https://ss64.com/nt/cmd.html] (WSL备份,windows Docker安装)[https://w ...
- CF404D-DP【成就达成】
CF404D-DP 正经的东西 题意 给定一个字符串,只包含'0','1','2','*','?'五种字符,其中'?'可被替换为其他任何一种,求使序列符合扫雷地图定义的方案数. 一个数字字符大小表示与 ...
- 什么是jstl表达式,怎么应用
1.介绍 JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能.jstl出现的目的同el一样也是要代替jsp页面中的脚 ...