控制从设备收到通知的频率
Posted
技术标签:
【中文标题】控制从设备收到通知的频率【英文标题】:Controlling frequency of notifications received from device 【发布时间】:2017-04-06 19:55:13 【问题描述】:有没有办法控制从设备接收推送通知的时间和频率?
我正在从 Azure 向 Windows UWP 设备发送推送通知。如果温度达到标签值或更高,则发送通知,标签为 0、10、20、30、40、50 等
所以订阅 20 的设备会在 temp 为 20 或高于 20 时收到来自服务器的通知。
但是我的问题是服务器每半小时更新一次,所以如果一次更新的温度是 23,那么下一次更新总是保持在 20 以上,用户会不断收到推送通知。而且它不会提醒他们任何新事物,只是不断发送相同的消息。
我希望能够为用户指定以下通知设置 因为每半小时接收一次通知会很烦人并经常打扰用户。
总是通知(已经这样做了)
仅在您第一次达到 20 或更高温度时通知
或 每 2 小时通知我一次
仅在这些时间(上午 9:00 - 晚上 10:00)通知 - 我认为这很容易做到,因为我可以通过后台任务取消订阅我猜想的通知,然后重新订阅它)
【问题讨论】:
【参考方案1】:我正在从 Azure 向 Windows UWP 设备发送推送通知。如果温度达到标签值或更高,则发送通知,标签为 0、10、20、30、40、50 等
据我所知,您可以利用 Azure Notification Hubs 将推送通知发送到 UWP 应用,并且在通过通知中心发送通知时,您可以使用 Routing and tag expressions 将通知推送到特定设备集。但正如官方教程所说的Tag expressions:
标记表达式可以包含所有布尔运算符,例如 AND (&&)、OR (||) 和 NOT (!)。它们还可以包含括号。如果标签表达式仅包含 OR,则标签表达式限制为 20 个标签;否则它们被限制为 6 个标签。
根据我对您的场景的理解,如果温度是28,那么您需要与支持的标签进行比较并发送通知如下:
NotificationHubClient.SendWindowsNativeNotificationAsync("toast","(0||10||20)")
有没有办法控制从设备接收推送通知的时间和频率?
据我所知,您没有内置功能可以实现此目的。据我了解,您需要使用 Installations 模型并将设备注册信息(InstallationId
、user tags
、LastPushNotificationDateTime
等)存储在数据存储中,然后过滤注册记录未收到通知的有效InstallationIds(设备),然后使用以下方法向特定安装(设备)发送通知,如下:
_hubclient.SendWindowsNativeNotificationAsync("payload", "$InstallationId:" + installationId + "");
此外,您可以关注此官方tutorial,了解有关通知中心的设备注册管理。还有官方blog关于Azure Notification Hubs: Best Practices for Management Devices,你可以参考一下。
【讨论】:
以上是关于控制从设备收到通知的频率的主要内容,如果未能解决你的问题,请参考以下文章