【问题标题】:How to upgrade a meteor app如何升级流星应用程序
【发布时间】:2017-11-25 11:39:24
【问题描述】:

我由 Meteor 创建的 App 现在正在通过 Meteor 的 HCP(Hot Code Push) 进行升级,这意味着用户在重新启动 App 后将立即获得新版本,无需任何信息或确认对话框。

HCP很棒,但是有两个用户不希望App悄悄升级的原因:

  1. 新版本可能存在降级或其他风险。
  2. 老版本够他们用了。

所以我想知道有没有办法,我可以向用户显示一个新版本可用对话框,描述新版本的功能,并询问他是否升级。当他同意后,使用 HCP 进行升级工作,或者,如果 HCP 在这种情况下不可用,则通过编写代码下载必要的包。

顺便说一句,我还有一个相关的问题:为什么 HCP 只能在 android 手机上运行,​​如何让它在 iOS 手机上运行。

非常感谢您提前回答这两个问题中的任何一个,或同时回答这两个问题。 谢谢。

【问题讨论】:

  • 使用 Meteor 进行热代码推送确实适用于 iOS。如果您对此有疑问,请随时提出一个新问题。

标签: android ios cordova meteor upgrade


【解决方案1】:

顺便说一句,我还有一个相关的问题:为什么 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]。向用户显示漂亮的弹出窗口。如果用户选择现在更新,我们会触发下一个功能(选择您需要的选项):

// 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);
}

【讨论】:

  • 抱歉回复晚了。 Reload._onMigrate 挂钩运行良好,谢谢。但如果我选择不升级,应用程序重新启动时它不会再次询问我。如果用户第一次选择“否”后改变主意,如何升级?
  • @vdonkey 您可以设置超时以重复询问升级或在 UI 中的某处添加升级按钮。
  • 多次失败后发现问题出在哪里:在我使用App的过程中,我更改了服务器,App会立即询问我是否升级。没事儿。但即使我选择不升级,App重启后,还是悄悄升级到新版本。那不是我想要的。如果用户在“现在升级”时选择“否”,我想让用户继续使用旧版本吗?对话框一直显示,直到他故意单击应用程序某处的升级按钮。
  • 嗯,可以使用 Service Worker 和/或 Appcache 包来完成。但这是一个单独问题的大话题。如果您将启动单独的线程,我可以回答它。
  • 我创建了另一个线程:stackoverflow.com/questions/45135240/… 非常感谢您的帮助
猜你喜欢
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多