checkVersion.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import config from './update_config.js';
  2. /**
  3. * 对比版本号,如需要,请自行修改判断规则
  4. * 支持比对 ("3.0.0.0.0.1.0.1", "3.0.0.0.0.1") ("3.0.0.1", "3.0") ("3.1.1", "3.1.1.1") 之类的
  5. * @param {Object} v1
  6. * @param {Object} v2
  7. * v1 > v2 return 1
  8. * v1 < v2 return -1
  9. * v1 == v2 return 0
  10. */
  11. function compare(v1 = '0', v2 = '0') {
  12. v1 = String(v1).split('.')
  13. v2 = String(v2).split('.')
  14. const minVersionLens = Math.min(v1.length, v2.length);
  15. let result = 0;
  16. for (let i = 0; i < minVersionLens; i++) {
  17. const curV1 = Number(v1[i])
  18. const curV2 = Number(v2[i])
  19. if (curV1 > curV2) {
  20. result = 1
  21. break;
  22. } else if (curV1 < curV2) {
  23. result = -1
  24. break;
  25. }
  26. }
  27. if (result === 0 && (v1.length !== v2.length)) {
  28. const v1BiggerThenv2 = v1.length > v2.length;
  29. const maxLensVersion = v1BiggerThenv2 ? v1 : v2;
  30. for (let i = minVersionLens; i < maxLensVersion.length; i++) {
  31. const curVersion = Number(maxLensVersion[i])
  32. if (curVersion > 0) {
  33. v1BiggerThenv2 ? result = 1 : result = -1
  34. break;
  35. }
  36. }
  37. }
  38. return result;
  39. }
  40. /**
  41. * 检测升级 使用说明
  42. * 1. 通过请求获取后台返回的更新信息
  43. * 2. 获取后台更新信息后 和 应用本身的版本(manifest.json里的versionName)做对比。
  44. * 3. 如果后台版本比应用本身的版本大 且 后台本次更新的平台里含有 用户的系统环境则触发更新,否则一律不触发更新。
  45. */
  46. export default function checkVersion() {
  47. return new Promise((resolve, reject) => {
  48. // #ifdef APP-PLUS
  49. uni.getSystemInfo({
  50. success: (info) => {
  51. // app系统环境
  52. let appPlatform = info.platform;
  53. console.log("appPlatform", appPlatform)
  54. // 获取本机版本号
  55. plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
  56. // 请补充这个请求即可正常使用
  57. uni.request({
  58. url: 'http://e.yujianmate.com/Gapi/Index/updateWgt?skey=' +
  59. getApp().globalData.skey + "&version=" + wgtinfo
  60. .versionCode,
  61. success: (res => {
  62. res = res.data;
  63. console.log("res22", res)
  64. if (compare(res.version, wgtinfo.version) ===
  65. 1 && res.platform.indexOf(appPlatform) !== -
  66. 1) {
  67. res.appPlatform = appPlatform;
  68. resolve(res);
  69. } else {
  70. reject('当前版本已经是最新的,不需要更新')
  71. }
  72. }),
  73. fail: (err) => {
  74. reject(err);
  75. }
  76. })
  77. });
  78. }
  79. });
  80. // #endif
  81. })
  82. }