update.js 2.9 KB

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