update.js 3.5 KB

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