有没有办法控制从设备接收推送通知的时间和频率?
我发送从Azure到Windows UWP设备的推送通知。如果温度达到标签值或更高,则发送通知,标签为0,10,20,30,40,50等
因此,当temp为20或高于20时,订阅20的设备将收到来自服务器的通知。
然而我的问题是服务器每半小时更新一次,因此如果一次更新的温度为23,那么下一次更新始终保持在20以上,用户将继续接收推送通知。并且它没有提醒他们任何新的东西,只是不断发送相同的信息。
我希望用户能够为通知指定以下设置 因为每半小时收到一次通知会让人烦恼并经常打扰用户。
始终通知(已经这样做)
仅在第一次达到20或更高温度时通知
OR 每2小时通知我一次
仅在这些时间(上午9:00 - 晚上10:00)通知 - 我认为这很容易做,因为我可以取消订阅通知,我猜是通过后台任务,然后订阅回来)< / p>
答案 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)")
有没有办法控制从设备接收推送通知的时间和频率?
众所周知,没有内置功能可以帮助您实现此目的。根据我的理解,您需要使用安装模型并将设备注册信息(InstallationId
,user tags
,LastPushNotificationDateTime
等)存储在数据存储中,然后过滤未收到通知的有效InstallationIds(设备)的注册记录,然后使用以下方法向特定安装(设备)发送通知,如下所示:
_hubclient.SendWindowsNativeNotificationAsync("payload", "$InstallationId:{" + installationId + "}");
此外,您可以通过此官方tutorial关注有通知中心的设备注册管理。此外,还有一个关于Azure通知中心的官方blog:管理设备的最佳实践,您可以参考它。