app-update-check.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. ///检查是否更新
  2. // type 1手动点击更新 0是自动检查
  3. export function checkUpdate(update_info, type = 0) {
  4. return new Promise((reolve, reject) => {
  5. // 获取版本号
  6. plus.runtime.getProperty(plus.runtime.appid, async (inf) => {
  7. console.log('当前版本', inf.version);
  8. console.log('最新版本', update_info.version);
  9. let need_update = await compareVersion(inf.version, update_info.version); // 检查是否需要升级(对比版本号)
  10. if (!need_update) {
  11. return reolve({
  12. msg: "已经是最新版本了"
  13. })
  14. } //不需要更新
  15. //需要更新,判断是不是静默更新
  16. if (/\.wgt$/.test(update_info.now_url) && update_info.silent == 1) {
  17. console.log("静默更新");
  18. if (type == 1) {
  19. return reolve({
  20. msg: "已经是最新版本了"
  21. })
  22. }
  23. startSilentUpdate(update_info.now_url); //开始静默更新
  24. return reolve({
  25. msg: ""
  26. })
  27. }
  28. //判断当前版本是不是点击过暂不更新
  29. let update_ignore_version = uni.getStorageSync("update_ignore") || "0.0.0";
  30. console.log("强制更新", update_info.force);
  31. if (type === 0 && update_ignore_version == update_info.version && update_info.force === 0) {
  32. console.log("之前取消过这个版本,就不再提示了");
  33. return reolve({
  34. msg:''
  35. })
  36. }
  37. //弹出更新
  38. uni.navigateTo({
  39. url: "/pages/index/app-update?updata_info=" + JSON.stringify(update_info),
  40. animationType: "fade-in"
  41. })
  42. });
  43. })
  44. }
  45. //对比版本号
  46. function compareVersion(ov, nv) {
  47. return new Promise((reolve, reject) => {
  48. if (!ov || !nv || ov == "" || nv == "") {
  49. return reolve(false);
  50. }
  51. let b = false;
  52. let ova = ov.split(".", 4);
  53. let nva = nv.split(".", 4);
  54. for (let i = 0; i < ova.length && i < nva.length; i++) {
  55. let so = ova[i],
  56. no = parseInt(so),
  57. sn = nva[i],
  58. nn = parseInt(sn);
  59. if (nn > no || sn.length > so.length) {
  60. return reolve(true);
  61. } else if (nn < no) {
  62. return reolve(false);
  63. }
  64. }
  65. if (nva.length > ova.length && 0 == nv.indexOf(ov)) {
  66. return reolve(true);
  67. } else {
  68. return reolve(false);
  69. }
  70. })
  71. }
  72. //开始静默更新
  73. function startSilentUpdate(url) {
  74. let options = {
  75. method: "get"
  76. };
  77. console.log("开始静默更新", url);
  78. let dtask = plus.downloader.createDownload(url, options);
  79. dtask.addEventListener("statechanged", function(task, status) {
  80. if (status === null) {} else if (status == 200) {
  81. //在这里打印会不停的执行,请注意,正式上线切记不要在这里打印东西///////////////////////////////////////////////////
  82. switch (task.state) {
  83. case 4:
  84. console.log("下载结束", task.filename);
  85. installWgt(task.filename); // 安装
  86. break;
  87. }
  88. }
  89. });
  90. dtask.start();
  91. }
  92. // 安装文件
  93. function installWgt(path) {
  94. plus.runtime.install(path);
  95. }