【问题标题】:Meteor: send message to user at hot code pushMeteor:在热码推送时向用户发送消息
【发布时间】:2016-02-22 20:30:40
【问题描述】:

当用户收到热码推送时,如何让他们知道?

此时在推送过程中会出现黑屏,用户会觉得很奇怪。我想向他们保证应用正在更新。

有没有可以用的钩子之类的东西?

【问题讨论】:

标签: meteor


【解决方案1】:

这是迄今为止我发现的不需要外部包的最短解决方案:

var ALERT_DELAY = 3000;
var needToShowAlert = true;

Reload._onMigrate(function (retry) {
  if (needToShowAlert) {
    console.log('going to reload in 3 seconds...');
    needToShowAlert = false;
    _.delay(retry, ALERT_DELAY);
    return [false];
  } else {
    return [true];
  }
});

您可以将其复制到应用的客户端代码中并更改两件事:

  1. console.log 替换为警报模式或通知用户屏幕即将重新加载的内容。

  2. ALERT_DELAY 替换为您认为适合用户从 (1) 读取模式的毫秒数。


其他说明

  • 我建议在 Evented Mind 上观看 this video,它更详细地解释了正在发生的事情。

  • 您也可以阅读reload source中的cmets以获得进一步的启发。

  • 我可以想象更复杂的重新加载逻辑,尤其是在决定何时允许重新加载时。另请参阅this pacakge 了解一种可能的实现方式。

【讨论】:

  • 感谢@David 很好的回答!这与 mdg:reload-on-resume 兼容吗?
  • 我查看了the source,我认为就功能而言答案是肯定的,但就用户体验而言答案是否定的。如果两个回调都注册了,在移动设备上,这个会提醒用户,但另一个会阻止迁移发生,直到应用程序恢复。你会误导用户,所以我会选择其中一个。如果你想让它们在同一个项目中,你可以把它放在一个包中并使用类似api.add_files("custom-reload.js", 'web.browser');的东西。
  • 好点。尽管当用户恢复并且他们的应用程序强制他们更新时,此时警告他们也很好。似乎最好的解决方案是将两者结合在一个包中 - 谢谢!
【解决方案2】:

您可以在客户端代码中通过Meteor.startup() 发送一些内容。我个人使用Bert 来敬酒。

【讨论】:

  • startup 将在迁移发生后运行。我建议使用我上面的评论来修改这个答案。我会的,但我快跑出门了。
  • 啊有趣,不知道有这个。
  • 我不太了解如何安全地覆盖它,所以我想我会让你回答它。 :)
  • 完成!这比我之前想象的要复杂一些。
猜你喜欢
  • 1970-01-01
  • 2015-05-09
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
相关资源
最近更新 更多