一,今天用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问题的更多相关文章

  1. Altium Designer自动更新——解决方法

    今天,打开AD,一直显示更新,关机重启也不管事. 然后,我把AD安装目录下,system文件夹下的Installation文件夹删了.就不再更新了.

  2. tk.mybatis通用插件updateByPrimaryKeySelective无法自动更新ON UPDATE CURRENT_TIMESTAMP列的解决办法

    tk.mybatis是一个很好用的通用插件,把CRUD这些基本的数据操作全都用动态SQL语句自动生成了,mapper和xml里十分清爽,但是昨天发现有一个小坑,记录在此: 有一张表,结构如下(已经简化 ...

  3. js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();)

    js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();) ...

  4. 解决Debina系统自动更新软件包的问题

    不知从何时开始,我的电脑每天开机连接上网络之后,不断的在下载数据,状态栏显示网速达到每秒1到2兆.开始我还不太在意,不过后来由于带宽全部被这种莫名其奥妙的下载占据了,我连网页都无否正常浏览了,所以我决 ...

  5. 解决Intellij Idea下修改jsp页面不自动更新

    解决Intellij Idea下修改jsp页面不自动更新 On frame deactivation:被设置成了Do nothing 解决办法:改为Update resources(更新资源)或者Up ...

  6. 关闭win10 自动更新 及蓝屏解决办法

    "控制面板-管理工具-服务"(或在"此电脑"鼠标右键,点击"管理"),找到Windows Update项目后,将"启动类型&quo ...

  7. 解析大型.NET ERP系统 自动更新

    C/S架构的应用程序需要支持自动更新功能,当新版本程序发布后,正在运行的客户端能检测到新版本的程序,通知用户是否下载更新.工作以来参与过几个自动更新模块的设计与维护,撰文总结自动更新模块设计与实现. ...

  8. QML 从无到有 3 (自动更新)

    新的需求出来啦,需要自动更新功能,不怕程序升级了. 自动更新,QML不好写,需要c++来辅助,这里就涉及QML中调用c++功能(这里就不写了,百度一下,很多). 思路:获取版本>下载程序> ...

  9. 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新

    源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...

随机推荐

  1. 1.3.7、通过QueryParam匹配

    server: port: 8080 spring: application: name: gateway cloud: gateway: routes: - id: guo-system4 uri: ...

  2. pybot参数

    p.p1 { margin: 0; font: 12px "Helvetica Neue" } p.p2 { margin: 0; font: 12px "Helveti ...

  3. ROS踩坑笔记总结

    2019-07-12 11:32:16 我的第一篇原创博客(当然是站在巨人肩膀上,有些内容参考了其他大神的博客,都一一做了说明),这些是我之前在学习ROS期间经历的一些坑,以及相对应的解决方案,希望可 ...

  4. 解决ionic5多个模态关闭一个其他不显示的问题

    ionic5 modal使用过程中,在模态窗中打开另外一个模态窗,浏览器中显示正常,但是andorid8系统真机调试时,关闭最上层模态窗,上级模态窗DOM中存在,但是不显示. 原因是android版本 ...

  5. 「BZOJ3545」「ONTAK2010」Peaks

    「BZOJ3545」「ONTAK2010」Peaks 题目传送门 题目大意: 给定一个 \(n\) 个点,\(m\) 条边的带点权边权无向图,有 \(q\) 次询问,每次询问从 \(v\) 点出发,经 ...

  6. 测试管理工具 - Tuleap部署和安装使用教程

    安装 通过CentOS的安装,非常简单,命令直接为pip install tuleap 部署 登录管理员权限 登录名为中文名拼音,如wuweiping. 设置的默认密码为12345678,也可以进入配 ...

  7. C语言:数组数据交换

    //交换数组中各个变量的值:第1和最后一个交换,第2与倒数第二个交换 #include <stdio.h> int main() { int a[]={1,2,3,4,5,6,7,8,9} ...

  8. printf函数返回值

    //返回值:正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志. #include <stdio.h> #defi ...

  9. LeetCode 778. Swim in Rising Water

    题目链接:https://leetcode.com/problems/swim-in-rising-water/ 题意:已知一个n*n的网格,初始时的位置为(0,0),目标位置为(n-1,n-1),且 ...

  10. 【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤

    问题描述 Azure Redis在使用的过程中,多次无规律的出现超时问题.抓取到客户端的异常错误后,想进一步的分析是何原因导致了如下异常呢? Timeout awaiting response (ou ...