要求 -
要求是在特定时间向设备发送通知。也就是说,如果用户在上午07:00设定了早餐时间表,那么他会收到相同的通知,例如“早餐时间,等等等等等等!”#。 p>
然而,如果用户在早上7点之前已经吃过早餐,他就会把他的日记记录下来,然后通知不得发送到他。
这是一个经常性的时间表,用户只有在需要时才会更改,否则,时间表大致相同。
我们取得了什么? -
因此,目前我们所做的是注册设备,例如' {TimeZone:EST},{早餐:07:00:00}'在应用程序的发布上。
如果用户已经吃过早餐,我们会更新他在通知中心的注册,同时还包含一个标签,例如' {HadBreakfast}' - 因此,用户设备注册的标签集变为 - ' {TimeZone:EST},{早餐:07:00:00},{HadBreakfast}'
我们坚持什么? -
这种方法非常有效,因为在发送通知时,我们会使用标签表达式,例如 - ' {TimeZone:EST}&& {早餐:07:00:00}&& !{HadBreakfast}'
因此,这将向所有希望在美国东部时间早上07:00:00收到早餐通知的用户发送通知,但不会向已经吃过早餐的用户发送通知。
但是,如果用户注册了{HadBreakfast}等标签,那么第二天,他可能无法根据刚刚描述的逻辑获得通知。
因此,我们提出了一种解决方法,通过运行调度程序,在所有具有该标记的设备上,在一天结束时仅取消注册{HadBreakfast}标记。
但是,在我们的脑海中,我们认为这不是解决这个问题的最佳方案。
其他选择 -
我们还想到了另一个替代方案,我们可以在每个小时内运行一个调度程序,对于具有该标记的所有用户设备,它将为过去一小时删除此类标记做同样的事情 - 这个过程似乎比一天运行一次更有效。
但我们想知道社区对我能尝试的一些想法吗?如果我们使用的方法是否正确?还有什么方法可以更简单或更顺利地完成这项工作? 如果我们有一百多万台设备怎么办?这会有用吗?