【问题标题】: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)通知 - 我认为这很容易做到,因为我可以通过后台任务取消订阅我猜想的通知,然后重新订阅它)

【问题讨论】:

    标签: azure push-notification uwp


    【解决方案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 模型并将设备注册信息(InstallationIduser tagsLastPushNotificationDateTime 等)存储在数据存储中,然后过滤注册记录未收到通知的有效InstallationIds(设备),然后使用以下方法向特定安装(设备)发送通知,如下:

    _hubclient.SendWindowsNativeNotificationAsync("payload", "$InstallationId:{" + installationId + "}");

    此外,您可以关注此官方tutorial,了解有关通知中心的设备注册管理。还有官方blog关于Azure Notification Hubs: Best Practices for Management Devices,你可以参考一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多