update-manager.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //http://xixio.cn/2018/08/18/regeneratorruntime-is-not-defined-%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E4%BD%BF%E7%94%A8async%E5%87%BD%E6%95%B0/
  2. // const regeneratorRuntime = require('../lib/runtime');
  3. class UpdateManager {
  4. checkForUpdate(updateManager) {
  5. return new Promise((resolve, reject) => {
  6. updateManager.onCheckForUpdate(function (res) {
  7. // 请求完新版本信息的回调
  8. resolve(res.hasUpdate);
  9. });
  10. });
  11. }
  12. fetchUpdate(updateManager) {
  13. return new Promise((resolve, reject) => {
  14. updateManager.onUpdateReady(function () {
  15. resolve(true);
  16. });
  17. updateManager.onUpdateFailed(function () {
  18. resolve(false);
  19. });
  20. });
  21. }
  22. async update() {
  23. let updateManager;
  24. if (wx.canIUse('getUpdateManager')) {
  25. updateManager = wx.getUpdateManager();
  26. const hasUpdate = await this.checkForUpdate(updateManager);
  27. if (hasUpdate) {
  28. const fetchOK = await this.fetchUpdate(updateManager);
  29. if (fetchOK) {
  30. wx.showModal({
  31. title: '已经有新版本了~',
  32. content: '更新小程序',
  33. showCancel: false,
  34. success(res) {
  35. if (res.confirm) {
  36. // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
  37. updateManager.applyUpdate()
  38. }
  39. }
  40. });
  41. } else {
  42. // 新的版本下载失败或者不支持updateManager
  43. wx.showModal({
  44. title: '已经有新版本了~',
  45. showCancel: false,
  46. content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开~'
  47. });
  48. }
  49. }
  50. }
  51. }
  52. }
  53. export default new UpdateManager();