如何在JS / HTML / CSS中每分钟更新Windows Store应用程序的实时磁贴?

时间:2013-04-26 14:12:47

标签: javascript windows-8 windows-store-apps microsoft-metro

我希望每次用户打开“开始”屏幕时都会更新我应用的实时图块,因为其实时图块的功能是“仅”可视(不需要在锁定屏幕上或执行特定逻辑背景例如)

在Windows应用商店中,您可以找到“手表”应用,它会通过应用实时图块在开始屏幕上显示时间,通常每分钟的粒度不会更多。这对我来说是完美的。

Watch in a live tile. http://img812.imageshack.us/img812/8143/watchtile.png

这些应用程序似乎比那些着名的15分钟有更精确的时间间隔,并且它们确实作为后台任务运行(这些应用程序要求获得许可)。

那么每15分钟实际发生什么?为什么这些瓷砖不会受到这15分钟的限制?我听说他们可能会使用通知队列,但他们仍然需要在1分钟内更新...

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

您可以使用TileUpdater.addToSchedule来安排up to 4096 notifications。所以,我想一个方法是:

  1. 设置维护任务以某个间隔运行(不需要 在这个锁定屏幕上。)。
  2. 任务运行时:

    2a上。清除通知队列。

    2B。安排一堆通知,一个现在+ 1分钟,一个 现在+ 2分钟等(注册少于4096,不要 注册超过你真正需要的。)

  3. 您的维护任务可以安排在每天运行,但如果没有及时运行,您可以安排2天的通知。

    这方面的主要缺点是,如果用户使用的电池电量超过2天(或者您计划的时间太长),您的通知将会停止,直到它们插入并允许您的维护任务运行。< / p>

    如果您不需要每分钟更新一次,您可以将它们安排在更远的地方(例如,如果您每5分钟一次,则为一周或更长时间)。

答案 1 :(得分:1)

请注意here找到的通知类型。

您提到的15分钟限制将在找到的定期通知here下讨论。

本地,预定和推送通知可能都可以满足您的要求,虽然我对预定的通知不太确定,因为我认为您可以一次排队的数量有限制。

(我认为 - 尚未对此进行测试)本地通知可用于从后台任务发送磁贴更新,但这具有您的应用需要运行才能使其工作的限制。

推送通知来自云服务,可能会在您的应用未运行时发生。不幸的是,这需要云服务。

答案 2 :(得分:1)

我在Microsoft Michael Palermo(博客here)的团队成员有一个名为Tile of Time的类似应用程序

这看起来像一个非常简单的应用程序,但是我从他那里理解的诀窍就是在接下来的十五分钟内为每一个更新安排一个后台任务,并确保没有重复。看起来很多,但这是解决为后台任务提供的时间限制。