向特定Firebase用户

时间:2018-04-04 16:02:23

标签: firebase firebase-cloud-messaging google-cloud-firestore

这是一个复合问题,即使它们都有共同的意图,我也会尽力将各个部分分开。

共同意图

明确方式向Firebase用户(而不仅仅是应用程序实例)发送有关特定主题的帖子的通知。

我尝试了各种各样的方法,但我找不到哪个方法是最好的答案。

方法1 - 仅依赖于数据库

每个Firebase用户在users/{userId}

的Firestore中都有自己的文档

本文档包含两个集合:令牌和兴趣。

令牌集合包含一个文档列表,这些文档将FCM令牌作为其字段之一。每次用户登录应用程序或调用FirebaseInstanceIDService.onTokenRefresh()时,都会更新集合以添加新令牌。

兴趣集合包含兴趣列表,这些兴趣列表只是字符串并用作帖子的标签。此集合的镜像为interests/{interestId}/users/{userId},显示所有对某些内容感兴趣的用户。 (通过云功能保持更新和同步)

当根据特定兴趣创建新帖子时,我可以获得所有感兴趣的用户的列表,然后从他们的文档中获取他们的令牌。最后,我向每个令牌发送通知。

问题

  • 这个解决方案并不优雅(这不是一个大问题)
  • 根据新的GDPR规则,我担心我可能不会被允许保存令牌 直接在数据库上
  • 如果用户离线时退出,则为 令牌未从其文档中删除,新用户收到 旧利益的通知。
  • 我应该跟踪当前令牌是什么,并在每次用户登录忽略FirebaseInstanceIDService.onTokenRefresh()时更新它吗?否则,只有在调用服务时登录的用户才会更新数据库。

方法2 - 使用FCM主题订阅

对我来说这应该是最好的选择,但是我不能理解如何让它在同一部手机上与多个用户一起工作(尽管一次只能使用一个)

我处理此问题的方式仍然是users/{userId}/interests集合,删除users/{userId}/tokensinterests/{interestId}/users,并在用户登录和注销时订阅/取消订阅各种主题。< / p>

问题

  • 如果用户离线时注销会怎样?无法检索当前订阅并删除每个订阅,从而可能导致订阅冲突的主题。

非常感谢你的时间

0 个答案:

没有答案