update.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /**
  2. * 系统更新 - 后续版本更新
  3. **/
  4. import Vue from 'vue';
  5. import { selectVersion } from '@/common/request/apis/index'
  6. // import { getappdownload } from '@/common/request/apis/h5'
  7. import { compareVersion } from '@/common/utils/app-update-check';
  8. export default {
  9. namespaced: true,
  10. // 储存数据
  11. state: {
  12. update: uni.getStorageSync("update") || false,
  13. downloadApkParams: uni.getStorageSync("downloadApkParams") || {},
  14. data: {},
  15. link: {},
  16. download: {
  17. path: null,
  18. start: false,
  19. install: false,
  20. progress: 0,
  21. totalBytesWritten: 0,
  22. totalBytesExpectedToWrite: 0,
  23. },
  24. task: null,
  25. isUpdate:false
  26. },
  27. // 修改数据
  28. mutations: {
  29. edit(state, {data, index}){
  30. state[index] = data;
  31. },
  32. // 检查更新
  33. setUpdate(state, data) {
  34. state.update = data;
  35. uni.setStorageSync('update', data);
  36. },
  37. setDownloadApkParams(state, data) {
  38. state.downloadApkParams = data;
  39. uni.setStorageSync('downloadApkParams', data);
  40. },
  41. },
  42. actions: {
  43. async update({commit, dispatch}, type) {
  44. // #ifdef MP
  45. const mp = uni.getUpdateManager();
  46. // 请求完新版本信息的回调
  47. mp.onCheckForUpdate((res) => {
  48. console.log(res.hasUpdate)
  49. if (!res.hasUpdate&&type) uni.$u.toast('已是最新版本,无需更新!')
  50. });
  51. mp.onUpdateReady((res) => {
  52. // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
  53. uni.showModal({
  54. title: '更新提示',
  55. content: '新版本已经准备好,是否重启应用?',
  56. success(show) {
  57. if (show.confirm) {
  58. mp.applyUpdate();
  59. }
  60. }
  61. });
  62. });
  63. mp.onUpdateFailed((res) => {
  64. console.log('新的版本下载失败')
  65. });
  66. // #endif
  67. // #ifdef APP-PLUS
  68. const system_info = uni.getSystemInfoSync();
  69. console.log('system=================',system_info)
  70. console.log('appVersion================',system_info.appVersion)
  71. uni.setStorageSync('appVersion',system_info.appVersion)
  72. let params = {
  73. os: system_info.platform //本机设备操作系统 (android || ios)
  74. };
  75. if (params.os != 'ios' && params.os != 'android') false; //如果不是安卓或ios 返回false
  76. selectVersion()
  77. .then(async res=>{
  78. let need_update = await compareVersion(system_info.appVersion, res.data.version); // 检查是否需要升级(对比版本号)
  79. if(need_update) {
  80. commit('setUpdate',true)
  81. commit('setDownloadApkParams',res.data)
  82. // console.log(state.update,'res')
  83. }else {
  84. commit('setUpdate',false)
  85. }
  86. })
  87. //这里自行请求API获取版本信息 建议传入操作系统标识,返回本机对应的操作系统最新版本信息,也就是安卓的返回就是安卓的版本信息 ios返回就是ios的版本信息
  88. // getappdownload()
  89. // .then(res => {
  90. // let versionInfo = res.data.version;
  91. // if (versionInfo&&versionInfo.downloadurl) {
  92. // let update_info = {
  93. // version: params.os == 'ios' ? versionInfo.newversion : versionInfo.newversion, //线上版本
  94. // now_url: params.os == 'ios' ? versionInfo.downloadurl : versionInfo.downloadurl, //更新链接
  95. // silent: versionInfo.silent ? versionInfo.silent : 0, //是否是静默更新
  96. // force: versionInfo.enforce, //是否是强制更新
  97. // net_check: versionInfo.net_check ? versionInfo.net_check : 1, //非WIfi是否提示
  98. // note: versionInfo.content //更新内容
  99. // };
  100. // checkUpdate(update_info, type).then(res => {
  101. // if (res.msg) {
  102. // if(type){
  103. // uni.$u.toast(res.msg)
  104. // }
  105. // }
  106. // }); ///检查更新
  107. // }
  108. // //checkUpdate 这个方法会做什么?:线上版本号 与 本地版本号做对比 ,如果需要更新 根据静默,强制、wifi等信息执行静默更新或跳转到升级页面
  109. // //跳转升级页面的前提是,需要新建并在pages.json中配置升级页面,配置方法请查看插件详情
  110. // })
  111. // .catch(err => {
  112. // uni.$u.toast(err.msg);
  113. // });
  114. // #endif
  115. },
  116. }
  117. };