需求-
要求是在特定时间向设备发送通知。也就是说,如果用户在早上7:00设置了早餐时间表,他就会收到一个通知,就像“早餐时间到了,诸如此类!”。
但是,如果用户在上午07:00之前已经吃过早餐,他会在日记中记录他所吃的东西等等,然后通知就不能发送给他。
这是一个反复出现的计划,用户只有在需要时才会更改这个计划,否则,计划将基本相同。
-我们取得了什么?-
因此,现在我们要做的是在应用程序启动时注册带有'{TimeZone:EST},{早餐:07:00:00}‘等标签的设备。
如果用户已经吃过早餐,我们会在通知中心更新他的注册,以便还包含一个标签,比如'{HadBreakfast}‘-所以,用户设备注册的标记集变成-’{时区:EST},{早餐:07:00:00},{HadBreakfast}‘
,我们被困在什么地方了?-
这种方法非常有效,因为在发送通知时,我们使用标记表达式,例如-‘{时区:EST} && {早餐:07:00}& !{HadBreakfast}’
因此,这将发送一个通知给所有的用户,他们希望在早上7:00为EST时区提供早餐通知,而不是那些已经吃过早餐的用户。
但是,如果用户使用{HadBreakfast}这样的标记注册,那么第二天,他可能不会根据刚才描述的逻辑获得通知。
因此,我们想出了解决办法,在一天结束时只为具有该标记的所有设备(通过运行调度程序)取消注册{HadBreakfast}标记。
但是,在我们心目中的某个地方,我们认为这不是解决这个问题的最佳办法。
其他替代方案-
我们还想到了另一种选择,我们可以在每一个小时运行一个调度程序,在过去的一小时内,它会对所有具有该标记的用户设备执行同样的操作--这个过程似乎比每天运行一次有效。
但我们想知道社区对我能尝试什么的想法?我们使用的方法是否正确?我们还能做些什么来更简单或者更顺利地完成这个任务呢?,如果我们有超过一百万的设备呢?这行吗?
发布于 2015-12-21 12:13:59
我建议探索批量修改注册的选项,并将Azure Scheduler用于重定位任务。
https://stackoverflow.com/questions/34395270
复制相似问题