控制从设备收到的通知的频率

时间:2017-04-06 19:55:13

标签: azure push-notification uwp

有没有办法控制从设备接收推送通知的时间和频率?

我发送从Azure到Windows UWP设备的推送通知。如果温度达到标签值或更高,则发送通知,标签为0,10,20,30,40,50等

因此,当temp为20或高于20时,订阅20的设备将收到来自服务器的通知。

然而我的问题是服务器每半小时更新一次,因此如果一次更新的温度为23,那么下一次更新始终保持在20以上,用户将继续接收推送通知。并且它没有提醒他们任何新的东西,只是不断发送相同的信息。

我希望用户能够为通知指定以下设置 因为每半小时收到一次通知会让人烦恼并经常打扰用户。

  • 始终通知(已经这样做)

  • 仅在第一次达到20或更高温度时通知

    OR 每2小时通知我一次

  • 仅在这些时间(上午9:00 - 晚上10:00)通知 - 我认为这很容易做,因为我可以取消订阅通知,我猜是通过后台任务,然后订阅回来)< / p>

1 个答案:

答案 0 :(得分:1)

  

我发送从Azure到Windows UWP设备的推送通知。如果温度达到标签值或更高,则发送通知,标签为0,10,20,30,40,50等

众所周知,您可以利用Azure Notification Hubs向UWP应用发送推送通知,并且您可以使用Routing and tag expressions在通过通知中心发送通知时将通知推送到特定的设备集。但正如官方教程所述Tag expressions

  

标记表达式可以包含所有布尔运算符,例如AND(&amp;&amp;),OR(||)和NOT(!)。它们也可以包含括号。标签表达式仅限于20个标签(如果它们仅包含OR);否则他们只限于6个标签。

根据我对您的方案的理解,如果温度为28,那么您需要与支持的标签进行比较并发送通知,如下所示:

NotificationHubClient.SendWindowsNativeNotificationAsync("{toast}","(0||10||20)")

  

有没有办法控制从设备接收推送通知的时间和频率?

众所周知,没有内置功能可以帮助您实现此目的。根据我的理解,您需要使用安装模型并将设备注册信息(InstallationIduser tagsLastPushNotificationDateTime等)存储在数据存储中,然后过滤未收到通知的有效InstallationIds(设备)的注册记录,然后使用以下方法向特定安装(设备)发送通知,如下所示:

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

此外,您可以通过此官方tutorial关注有通知中心的设备注册管理。此外,还有一个关于Azure通知中心的官方blog:管理设备的最佳实践,您可以参考它。