一,今天用VueApp 做自动更新调用按照网上列子直接 Plus 打包编译后出现了plus is not defined

发现需要引用document.addEventListener("plusready",function(){})

代码如下

  1. <script>
  2.  
  3. export default {
  4. name: "looklive",
  5. components: {
  6. // eslint-disable-next-line vue/no-unused-components
  7. headcontrol,
  8. },
  9. data() {
  10. return {
  11. path: "",
  12. installFlag: false,
  13. };
  14. },
  15. mounted() {
  16. //自动更新
  17. this.getNativeVersion();
  18. },
  19. methods: {
  20. // 获取当前版本号
  21. getNativeVersion() {
  22. let that = this;
  23. document.addEventListener("plusready", function () {
  24. plus.runtime.getProperty(plus.runtime.appid, function (inf) {
  25. that.nativeVersion = inf.version;
  26. that.checkUpdate(inf.version);
  27. localStorage.setItem("nativeVersion", inf.version);
  28. });
  29. });
  30. },
  31. // 检查更新
  32. checkUpdate(nativeVersion) {
  33. let that = this;
  34. const checkUrl = "http://119.23.211.81:8000/api/ip/GetAppVersion";
  35. that.axios.get(checkUrl).then((result) => {
  36. // alert("服务区版本" + result.data.version);
  37. //alert(nativeVersion);
  38. if (!that.VersionContrast(nativeVersion, result.data.version))
  39. that.downloadApk(result.data.url);
  40. });
  41. },
  42. //版本号对比
  43. VersionContrast(curV, reqV) {
  44. // 当前版本号:curV;比较版本号:reqV
  45. if (curV && reqV) {
  46. let arr1 = curV.split("."),
  47. arr2 = reqV.split(".");
  48. let minLength = Math.min(arr1.length, arr2.length),
  49. position = 0,
  50. diff = 0;
  51. //依次比较版本号每一位大小,当对比得出结果后跳出循环(后文有简单介绍)
  52. while (
  53. position < minLength &&
  54. (diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0
  55. ) {
  56. position++;
  57. }
  58. diff = diff != 0 ? diff : arr1.length - arr2.length;
  59. //若curV大于reqV,则返回true
  60.  
  61. return diff >= 0;
  62. }
  63. },
  64. // 下载apk文件
  65. downloadApk(url) {
  66. let that = this;
  67.  
  68. let watiting = plus.nativeUI.showWaiting("安装文件...");
  69. let dtask = plus.downloader.createDownload(url, {
  70. method: "GET",
  71. retry: 0,
  72. });
  73. dtask.addEventListener(
  74. "statechanged",
  75. function (task, status) {
  76. if (!dtask) {
  77. return;
  78. }
  79. switch (task.state) {
  80. case 1:
  81. break;
  82. case 2:
  83. break;
  84. case 3:
  85. var nowData = Math.floor(
  86. (task.downloadedSize * 100) / task.totalSize
  87. );
  88. console.log(nowData);
  89. if (nowData % 10 === 0) {
  90. watiting.setTitle("已下载:" + nowData + "%");
  91. if (nowData === 100) {
  92. watiting.toast("正在准备环境,请稍后!");
  93. watiting.close();
  94. }
  95. }
  96. break;
  97. case 4:
  98. // 安装apk资源包
  99. plus.runtime.install(
  100. dtask.filename,
  101. {},
  102. function () {
  103. plus.nativeUI.closeWaiting();
  104. plus.nativeUI.alert("更新完成!", function () {
  105. // 更新完成后重启应用
  106. plus.runtime.restart();
  107. });
  108. },
  109. function (e) {
  110. plus.nativeUI.closeWaiting();
  111. plus.nativeUI.toast("安装更新失败!");
  112. }
  113. );
  114. break;
  115. default:
  116. break;
  117. }
  118. },
  119. false
  120. );
  121. dtask.setRequestHeader("Access-Control-Allow-Origin", "*");
  122. dtask.start();
  123. },
  124. },
  125. };
  126. </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. 【玩转 WordPress】基于 Serverless 搭建个人博客图文教程,学生党首选!

    以下内容来自「玩转腾讯云」用户原创文章,已获得授权. 01. 什么是 Serverless? 1. Serverless 官方定义 Serverless 中的 Server是服务器的意思,less 是 ...

  2. 【转载】Nginx多服务绑定80端口及映射域名

    多服务绑定80端口及映射域名 说明:业务需要配置的样例模板,如需深入了解,请查看官方文档 1.Nginx配置文件nginx.conf(可拆分多台机器部署) worker_processes  1; e ...

  3. SpringBoot:SpringCloud与SpringBoot兼容版本参(其它组件兼容情况)

    SpringCloud --- Springboot 版本兼容 SpringCloud SpringBoot Edgware.SR5 >=1.5.0.RELEASE and <=1.5.2 ...

  4. Mysql/Oracle/达梦中数据字典表

    在mysql中,数据字典表存放在information_schema库中,,对应的两张表,分别是TABLES,和COLUMNS. 在oracle中有表空间(即用户空间或者库)和模式的概念.模式和表空间 ...

  5. Js中的防抖与节流函数

    1.何为防抖与节流函数呢? 1.防抖(debounce):通过setTimeout方式,在一定的时间间隔内,将多次触发的事件转化为一次触发.也就是说当一个用户一直触发这个函数,且每次触发函数的间隔小于 ...

  6. Gauge自动化测试框架的安装和入门

  7. HCNA Routing&Switching之动态路由协议OSPF建立邻居的条件

    前文我们了解了OSPF的router id.数据包结构.类型.不同类型的数据包作用以及OSPF状态机制,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15027 ...

  8. WLS中Linux与Windows间的环境共享

    Reference 更多cmd.exe帮助参考 (cmd_helps)[https://ss64.com/nt/cmd.html] (WSL备份,windows Docker安装)[https://w ...

  9. CF404D-DP【成就达成】

    CF404D-DP 正经的东西 题意 给定一个字符串,只包含'0','1','2','*','?'五种字符,其中'?'可被替换为其他任何一种,求使序列符合扫雷地图定义的方案数. 一个数字字符大小表示与 ...

  10. 什么是jstl表达式,怎么应用

    1.介绍 JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能.jstl出现的目的同el一样也是要代替jsp页面中的脚 ...