update.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /**
  2. * 参考文档:http://ask.dcloud.net.cn/article/431
  3. * 升级文件为JSON格式数据,如下:
  4. *
  5. * 需升级
  6. {
  7. "status":1,
  8. "version": "2.6.0",
  9. "title": "Hello MUI版本更新",
  10. "note": "修复“选项卡+下拉刷新”示例中,某个选项卡滚动到底时,会触发所有选项卡上拉加载事件的bug;\n修复Android4.4.4版本部分手机上,软键盘弹出时影响图片轮播组件,导致自动轮播停止的bug;",
  11. "url": "http://www.dcloud.io/hellomui/HelloMUI.apk"
  12. }
  13. *
  14. * 无需升级
  15. {"status":0}
  16. */
  17. var server = API.API_ROOT + "/apk/check.json"; //获取升级描述文件服务器地址
  18. function update() {
  19. mui.getJSON(server, {
  20. "appid": plus.runtime.appid,
  21. "version": plus.runtime.version,
  22. "imei": plus.device.imei
  23. }, function(data) {
  24. var curVer = plus.runtime.version,
  25. inf = data[plus.os.name];
  26. if(inf) {
  27. var srvVer = inf.version;
  28. if(compareVersion(curVer, srvVer)) {
  29. plus.nativeUI.confirm(inf.note, function(event) {
  30. if(0 == event.index) {
  31. plus.runtime.openURL(inf.url);
  32. }
  33. }, data.title, ["立即更新", "取  消"]);
  34. }
  35. }
  36. });
  37. }
  38. /**
  39. * 比较版本大小,如果新版本nv大于旧版本ov则返回true,否则返回false
  40. * @param {String} ov
  41. * @param {String} nv
  42. * @return {Boolean}
  43. */
  44. function compareVersion(ov, nv) {
  45. if(!ov || !nv || ov == "" || nv == "") {
  46. return false;
  47. }
  48. var b = false,
  49. ova = ov.split(".", 4),
  50. nva = nv.split(".", 4);
  51. for(var i = 0; i < ova.length && i < nva.length; i++) {
  52. var so = ova[i],
  53. no = parseInt(so),
  54. sn = nva[i],
  55. nn = parseInt(sn);
  56. if(nn > no || sn.length > so.length) {
  57. return true;
  58. } else if(nn < no) {
  59. return false;
  60. }
  61. }
  62. if(nva.length > ova.length && 0 == nv.indexOf(ov)) {
  63. return true;
  64. }
  65. }
  66. mui.os.plus && !mui.os.stream && mui.plusReady(update);