我在一个项目中使用Firebase(FCM),在该项目中,我使用主题功能向各个时区的许多不同用户发送每日通知。通知总是发出的,当用户时间为12:00 PM时,为了实现这一点,我每天都会为要通知的用户创建一个唯一的主题。目前,我们的主题如下所示:x_daily_notification_1550152751-以前我有一个系统可以根据时区创建静态主题,因此可以向用户订阅类似x_daily_notification_europe_london的主题,但是事实证明,该主题过于不可靠且难以管理,由于用户在时区之间移动。
该系统的工作方式基于我在去年下半年提出的问题中的研究和建议:FCM topic limits and expiration/invalidation of old unused topics?
所以总结一下:
这些延迟的原因是,我注意到有时我们没有收到通知。我能想到的唯一原因是,因为我们发送和取消订阅该主题的速度太快,因此,如果要通知10万个用户,并且立即将其删除,则只有少数人能得到它。看来FCM不会等待一个请求完成才处理另一个请求。
即使我在退订之前等待了10分钟,似乎有时也未收到所有用户的通知,这可能意味着在我再次退订之前,未对他们进行处理,因此我想等待更长的时间,然后再取消订阅所有用户。主题,以确保他们已收到通知。我想到的第一个解决方案是等待,直到下一批准备好处理,然后删除上一个主题,这大约是一个小时,之后,我可以或多或少地确定每个人都在那一点。
我真正的问题是,我是否完全需要退订?它可能会使Firebase混乱,但可以肯定的是,他们有适当的系统来处理此问题,因为它在文档中没有提及任何有关清理的内容。