在没有后台任务的情况下增加徽章值

Posted

技术标签:

【中文标题】在没有后台任务的情况下增加徽章值【英文标题】:Incrementing badge value without a background task 【发布时间】:2015-12-01 10:43:06 【问题描述】:

我正在构建一个消息应用程序作为通用 Windows 8.1 商店项目,我对推送通知系统有点困惑。我正在使用 WNS,基本例程工作正常(通知通道 uri 交换、发送 toast 通知等)

现在我想通过服务器通知增加徽章值并通过本地通知减少它。在挖掘手册之后,我似乎没有找到一种方法来做到这一点,而没有一个后台任务会接收原始通知并做一些事情来设置正确的值。我找到的只有setting the value。我宁愿完全避免使用后台任务,因为它们可能会被省电模式(无论是否出于用户意图)阻止。例如,Skype 似乎根本无法在后台执行被阻止的情况下提供任何通知,我不希望我的应用程序以这种方式运行。

所以,我想回答两个问题:

    有没有办法仅通过通知来增加/减少徽章价值? 有没有办法在应用程序代码中获取当前徽章值?

【问题讨论】:

【参考方案1】:

好吧,我尝试做你想做的事情,但找不到任何东西,最好的方法是在后台任务的帮助下完成,并添加后台任务以始终允许通过覆盖控件时用户首次打开应用。

希望,这对你有帮助。

【讨论】:

【参考方案2】:

磁贴详细信息(包括徽章值)是只读的。

尽量不要将徽章编号视为递增或递减,而只是设置为新值。

您需要运行代码才能更改该值。这可能在本地应用程序中(当它运行时)、在设备上的后台代理/任务中或在某处的远程服务器上。

要设置新值,您必须知道该值应该是什么。如果它与先前显示的值相关,则需要单独跟踪它。

因此,按照相反的顺序回答您的问题。

2) 不,您无法读取当前显示的值。

1) 您可以通过将显示的值设置为更高或更低的新值来增加或减少显示的值。设置新值只能使用绝对值来完成,因为没有增量(或减量)消息的概念。用于更新磁贴的通知可以从任何地方(前台、后台或远程)发送,但何时以及如何完成将取决于最适合应用/用户的方式。

【讨论】:

谢谢马特!不幸的是,这证实了我的发现。由于我希望我的应用程序能够随时通知用户更新(毕竟这是一个即时通讯工具),我现在决定实现徽章计数器的仅远程更新。这将需要通知服务器客户端使用了哪些更新,以便它可以计算出正确的剩余更新数。我来自 iosandroid 的队友似乎并没有在使用此功能时遇到同样的困难。

以上是关于在没有后台任务的情况下增加徽章值的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序在Phonegap(cordova)的后台状态下收到推送通知时增加徽章编号,

推送通知徽章

如何增加后台任务的运行时间?

在不运行应用程序的情况下注册后台任务

没有锁屏的时间触发后台任务。(WinRT)

应用程序在后台时如何增加徽章数量