FCM 令牌 - 我什么时候应该在我的数据库中存储/保存它?

Roh*_*eja 7 notifications push-notification firebase flutter firebase-cloud-messaging

我不确定什么是合适的 FCM 令牌处理机制,所以我在这里写下我们的过程只是为了获得一些验证或改进建议:

  1. 在客户端登录时获取 FCM 令牌 (Flutter)
  2. 在我们的数据库中保存 FCM 令牌(使用我们的 REST API)
  3. 注销时删除 FCM 令牌(使用我们的 REST API)

Q1:我们是否应该比登录时更频繁地获取 FCM 令牌?AFAIK、FCM 令牌仅在应用重新安装、清除缓存等时发生变化。这是否还包括来自 PlayStore 的应用更新?在这种情况下,我们是否应该在每次应用程序启动时保存 FCM 令牌,因为用户将在应用程序更新后保持登录状态,因此我们不会触发保存 FCM 调用。

Q2:我是否提到了从我们的数据库中删除 FCM 令牌的正确方法?我们不希望用户在退出后继续收到通知。

Q3:一个附加的想法是将 与device_id一起发送到服务器,fcm_token以便服务器删除所有以前保存的 FCM 令牌device_id。这对于在用户卸载应用程序而不注销的情况下在数据库上没有无用的令牌很有用(这意味着DELETE fcm_token调用从未通过。)

Fra*_*len 5

FCM 令牌会在您无法控制的条件下刷新,并且这些条件甚至会随着时间的推移而发生变化。要正确处理令牌更新,您需要同时实现最初获取令牌监视令牌更新

请注意,FCM 令牌不与用户关联。如果您想将它们与用户相关联,这很好,但在这种情况下,需要由您的应用程序代码来维护关联。例如,这包括当用户注销时从数据库中删除令牌,就像您在步骤 3 中所做的那样。

为了保持令牌注册表清洁,您确实可以按照您的意愿主动执行此操作,或者按如下所示被动执行此操作: https: //github.com/firebase/functions-samples/blob/master/fcm-notifications/functions/index.js #L76-L88