HBuilder●MUI●APP启动时自动检测更新

2019年11月14日13:27:42 2 197 2705字阅读9分1秒
摘要

HBuilder前端APP框架MUI启动时自动检测,实时更新APP。

最近在使用HBuilder的MUI做一个H5的APP,碰到一个检测升级的问题,晚上熬夜码代码,终于研究出来了;简单做一个记录,方便下一次使用。

说明需求是启动app时,自动检测更新,提示升级,并下载安装。

代码

  1. plus.runtime.getProperty(plus.runtime.appid,function(inf) {
  2.     ver = inf.version;
  3.     console.log('手机版本ver:' + ver);
  4.     var ua = navigator.userAgent.toLowerCase();
  5.     console.log('手机版本型号:' + ua);
  6.     var url = SERVER_HOST + MODULE_UpdateApp + '?version=' + ver;
  7.     var client;
  8.     console.log('手机版本型号:' + mui.os);
  9.     mui.ajax(url, {
  10.         type: 'get',
  11.         //HTTP请求类型
  12.         timeout: 10000,
  13.         //超时时间设置为10秒;
  14.         //async: false,
  15.         dataType: "json",
  16.         headers: {
  17.             'Content-Type': 'application/json'
  18.         },
  19.         success: function(data) {
  20.             if (data.status == 0) return;
  21.             if (data.status == 1) {
  22.                 var btn = ["确定升级""取消"];
  23.                 mui.confirm('更新内容:\n' + data.note, '软件升级提醒', btn,
  24.                 function(z) {
  25.                     if (z.index == 0) {
  26.                         var apkUrl = data.url;
  27.                         plus.nativeUI.showWaiting("下载更新");
  28.                         plus.downloader.createDownload(apkUrl, {
  29.                             filename: "_doc/update/"
  30.                         },
  31.                         function(download, status) {
  32.                             if (status == 200) {
  33.                                 mui.toast("下载更新成功:" + status);
  34.                                 plus.runtime.install(download.filename);
  35.                             } else {
  36.                                 mui.toast("下载更新成功:" + status);
  37.                                 plus.nativeUI.toast("下载更新失败!");
  38.                             }
  39.                             plus.nativeUI.closeWaiting();
  40.                         }).start();
  41.                     } else {
  42.                         console.log('不确定');
  43.                         return;
  44.                     }
  45.                 });
  46.             }
  47.         },
  48.         error: function(xhr, type, errorThrown) {
  49.             //异常处理;                             
  50.             mui.alert("网络异常" + type);
  51.             console.log(type);
  52.         }
  53.     });
  54. });

将这个代码放置在APP启动页面入口的 $.plusReady(function() {});内,最好就在这个下面。这个函数相当于Js的页面加载完成后执行。

接口

  1. /// <summary>
  2. /// 版本更新
  3. /// </summary>
  4. /// <param name="obj"></param>
  5. /// <returns></returns>
  6. [Route("UpdateApp")]
  7. [HttpGet]
  8. public dynamic UpdateApp(string version)
  9. {
  10.     try
  11.     {
  12.         if (version == null || version == "")
  13.             return new { status = 0 };
  14.         if (version != "0.1.191114")//最新版本号及relase notes可以存储在数据库或文件中  
  15.         {
  16.             return new { status = 1, title = "应用更新", note = "1.修复发现的bug;\n2.增加在线更新;", url = "apk下载地址" };
  17.         }
  18.         return new { status = 0 };
  19.     }
  20.     catch (Exception ex)
  21.     {
  22.         //输出错误日志
  23.         return new { status = 0 };
  24.     }
  25. }

该接口采用ASP.NET MVC中的WebAPI,仅供参考。

继续阅读
weinxin
微信公众号
博客微信公众号,欢迎关注。
avatar
  • 文本由 发表于 2019年11月14日13:27:42
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:2   其中:访客  2   博主  0
    • avatar 鹅鹅鹅 @回复 0

      内容不错。域名很随意