如何将用户的偏好与他们在 FCM 上订阅的主题同步?

Posted

技术标签:

【中文标题】如何将用户的偏好与他们在 FCM 上订阅的主题同步?【英文标题】:How do I sync an user's preferences with their subscribed topics on FCM? 【发布时间】:2018-05-13 12:35:56 【问题描述】:

我正在尝试创建一个应用程序,其中通过 Firebase 进行身份验证的用户指定主题列表,系统将其保存到 Cloud Firestore。 数据库可能具有类似于 users/userId/interests 的结构,在该集合中,我将有一个文档列表,其中包含“新闻”、“烹饪”等值。 然后另一组用户可以决定仅向对特定主题感兴趣的人发送通知。 似乎最好的方法是通过 FCM 的主题功能。 所以我的问题是:如何确保我的 Firebase 用户在数据库中的首选项与他们设备的主题订阅同步?我应该在应用程序的初始屏幕期间查询数据库并在每个打开的应用程序上订阅每个主题吗? 谢谢

【问题讨论】:

【参考方案1】:

您不必在每次应用打开时都重新订阅 FCM 主题。一旦您订阅了某个主题,它将一直保持订阅状态,直到您明确取消订阅或 android 应用的实例 ID 更改或失效。

【讨论】:

感谢您的回答。你是指 GCM 的 App Instance ID 还是 FCM 的 Instance ID?我读到后者会在应用程序的数据被删除时发生变化,这很好。 ID也不会周期性变化吗? 它们实际上是一回事 - FCM 是 GCM 的继任者/替代品,两个 API 引用相同的实例 ID。要查看实例 ID 何时更改,请参阅 firebase.google.com/docs/reference/android/com/google/firebase/…。

以上是关于如何将用户的偏好与他们在 FCM 上订阅的主题同步?的主要内容,如果未能解决你的问题,请参考以下文章

如何不向不想接收推送的用户发送 FCM?

FCM 主题缓存在旧令牌上 - 用户仍然收到推送

在创建主题之前或订阅之前发送通知 FCM

Flutter 按主题使用 FCM 推送通知

向订阅主题的所有用户推送通知,使用 FCM Firebase 的登录用户除外

fcm 订阅主题