android - 如何升级 meteor 应用程序

标签 android ios cordova meteor upgrade

我的Meteor创建的应用程序现在正在通过Meteor的HCP(热代码推送)进行升级,这意味着用户只要重新启动应用程序就会得到新版本,无需任何信息或确认对话框。

HCP 很棒,但有两个原因导致一些用户不希望应用程序悄悄升级:

  1. 新版本可能存在降级或其他风险。
  2. 旧版本足以满足他们的使用。

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

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

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

最佳答案

By the way I have another question related: Why HCP only work on android phone, how to make it work on iOS phone.

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

要显示提示对话框,您必须在 Reload._onMigrate Hook 中拦截 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 钩子(Hook)中返回 [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);
}

关于android - 如何升级 meteor 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44695207/

相关文章:

android - 错误 : cannot find symbol variable GL_TEXTURE_EXTERNAL_OES + OpenCV on Android Studio

java - 带有 CollapsingToolbarLayout 的 PreferenceFragment

ios - iOS 7 和 iOS8 中的 Alert View 与 UIAlertController

ios - 在应用移至后台进程时处理 iOS 错误

javascript - cordova-plugin-file-transfer 插件无法在 Windows 10 sencha touch store 应用程序上运行

ios - phoneGap (Cordova) 如何在内部工作,iOS 特定

Android Handler.createAsync()。它是如何工作的?

返回应用程序时 Android 后台 Activity 消失

ios - 添加 CALayer 到 UITableViewCell 滚动后移除

ios - 用于用户注册过程的 Segue 类型 - iOS 5