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的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...
随机推荐
- Redis 过期时间解析
文章参考:<Redis 设计与实现>黄建宏 设置过期时间 通过 EXPIRE 或者 PEXPIRE 命令,客户端可以以秒或毫秒精度为数据库中的某个键设置生存时间 TTL (Time To ...
- 如何快速实现一个虚拟 DOM 系统
虚拟 DOM 是目前主流前端框架的技术核心之一,本文阐述如何实现一个简单的虚拟 DOM 系统. 为什么需要虚拟 DOM? 虚拟 DOM 就是一棵由虚拟节点组成的树,这棵树展现了真实 DOM 的结构.这 ...
- html javascript checkbox实现全选功能
html代码 <input type="checkbox" id="all" />all</input> <input type= ...
- base64文件解码
$str = str_replace(' ', '+', $str); //替换空字符串为+$str = str_replace('\n', '',$str); //置空换行符$str = str_r ...
- 序-WEB方向指南
WEB 这个方向其实是目前从业人员最多的方向,也是学习安全门槛最低的方向,当然也是最容易恰饭的方向. 我从入行到现在也依旧没有脱离它,毕竟在我这个小城市.小圈子里,不干这个好像就要没饭吃了,但是你说它 ...
- F5 Http monitor
The BIG-IP HTTP health monitor attempts to mabtch the configured Receive String against the HTTP res ...
- 「SPOJ 3105」Power Modulo Inverted
「SPOJ 3105」Power Modulo Inverted 传送门 题目大意: 求关于 \(x\) 的方程 \[a^x \equiv b \;(\mathrm{mod}\; p) \] 的最小自 ...
- Linux下如何使用Rsync备份服务器重要数据
Rsync介绍: Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似 ...
- L inux系统安全及应用---暴力破解密码
系统安全及应用一.开关机安全控制① 调整BIOS引导设置② GRUB限制二.终端登录安全控制① 限制root只在安全终端登录② 禁止普通用户登录举例三.系统弱口令检测① Joth the Ripper ...
- python + Excel数据读取(更新)
data.xlsx 数据如下: import xlrd#1.读取Excel数据# table = xlrd.open_workbook("data.xlsx","r&qu ...