如何升级meteor应用程序

我的Meteor创build的应用程序正在通过Meteor的HCP(Hot Code Push)进行升级,这意味着一旦他重新启动应用程序,用户将得到一个新的版本,没有任何信息或确认对话框。

HCP是伟大的,但有一些用户不希望应用程序悄悄升级有两个原因:

  1. 新版本可能会有降级或其他风险。
  2. 旧版本足够他们的使用。

所以我想知道是否有办法,我可以向用户展示一个描述新版本function的新版本对话框,并询问是否升级。 当他同意的时候,使用HCP来做升级工作,或者如果HCP在这个场合不能使用的话,通过编写代码下载必要的软件包。

顺便说一下,我有另一个相关的问题:为什么HCP只能在Android手机上工作,如何使它在iOS手机上工作。

非常感谢您回答这两个问题中的任何一个,或两者兼而有之。 谢谢。

顺便说一下,我有另一个相关的问题:为什么HCP只能在Android手机上工作,如何使它在iOS手机上工作。

HCP应该以同样的方式在所有平台上工作。

要显示提示对话框,您必须在Reload._onMigrate钩子中拦截HCP:

 import { Reload } from 'meteor/reload'; Reload._onMigrate(() => { const decision = confirm("New version is available, would you like to upgrade now?") return [decision]; // Return [false] to manually handle HCP }); 

这是一个非常简单的例子,你可以触发很好的UI / UX元素来处理它。

例如,我们总是在_onMigrate钩子中返回[false] 。 向用户展示不错的popup窗口。 如果用户select现在更新,我们触发下一个function( select你需要的选项 ):

 // Purge and reload cache for AppCache package window.applicationCache.swapCache(); window.applicationCache.update(); // Drop ServiceWorker cache window.caches.keys().then((keys) => { keys.forEach((name) => { window.caches.delete(name); }); }).catch((err) => { console.error('window.caches.delete', err); }); // Unregister Service Worker SWRegistration.unregister(); // Reload the page if (window.location.hash || window.location.href.endsWith("#")) { window.location.reload(); } else { window.location.replace(window.location.href); }