【问题标题】:Firebase send FCM AND store data against uid in realtime databaseFirebase 发送 FCM 并在实时数据库中针对 uid 存储数据
【发布时间】:2016-10-17 18:54:57
【问题描述】:

我刚刚开始熟悉新的 Firebase 产品,我希望一些 Firebase 专家可以验证我的方法。

我想使用 Firebase 云消息传递向我的应用用户的子集(个人和组)发送推送通知。至关重要的是,我还想同时针对每个用户的 uid 存储一些信息(在 Realtime DB 中)。我的/users 节点看起来像这样:

/users
   -uid (the unique id created by Firebase)
       -firstname
       - ...
       - msgHistory
            -msgId
               -date
               -text
               -...

无论他们是否选择推送消息,我都需要更新所有目标用户的 msgHistory。那么,下面的方法有意义吗?

  1. 为每组用户创建我自己的目标 uid 列表(我想我不能使用主题,因为我想定位那些还没有选择推送通知的用户?)

那么当我想向那个群组发送消息时,

  1. 循环通过每个 uid 更新其 msgHistory 节点和...
  2. 如果用户允许,发送推送通知

假设:

  • 所有用户都将通过身份验证(电子邮件、Google 和 Facebook)
  • 现阶段我只关心 iOS 设备

【问题讨论】:

  • 我不完全确定您的分组机制,但除此之外,您所描述的似乎确实是一种常见的方法。主题听起来也是一种有效的方法。满足您的应用条件后,只需致电subscribeToTopic()
  • @FrankvanPuffelen 感谢该方法的评论和链接。就“分组策略”而言,我的应用程序基本上是一个业务目录,因此用户将按地理区域、他们对类别的兴趣或对个别业务的兴趣进行分组(定位)。我可以看到这如何适用于主题,但我的查询是主题订阅是否可用于识别订阅者,以便我可以在用户节点上存储数据(例如我的示例中的 msgHistory)。我的假设是我必须在用户节点(或 /subscribers 节点中的 uid)上存储订阅记录才能做到这一点。有意义吗?
  • 没有要求您维护用户订阅的主题,一旦用户满足要求订阅它们,当他们不取消订阅它们时。然后你可以发送到主题,只有那些订阅的用户才会收到消息。您可以映射出于其他原因订阅用户的主题,但发送消息不是必需的。

标签: firebase firebase-realtime-database firebase-cloud-messaging


【解决方案1】:

这是非常好的方法。我使用 FCM 和 facebook 登录为 android 创建了相同的消息传递应用程序,它的工作类似于 pro:检查我的数据格式 (json)

    {
  "chat" : {
    "armobiliya@gmail-com-doggieshome007@gmail-com" : {
      "-KN8QNQeARA3T5esXvn2" : {
        "message" : "hi doggy how are you?",
        "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2",
        "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3"
      },
      "-KN8QSDUfGJwaao33nkd" : {
        "message" : "I am fine ...n you?",
        "recipient" : "JY6HQlltFCUqps3YDzGYLat7YLC3",
        "sender" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2"
      },
      "-KN8QV1tuY5imq11EyhY" : {
        "message" : "me too",
        "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2",
        "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3"
      },
      "-KN8QaYfdXmKuceLqdkP" : {
        "message" : "missing you\uD83D\uDE25",
        "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2",
        "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3"
      },
      "-KN8Qd1PK_iFfKD6w8gL" : {
        "message" : "ohhhhh\uD83D\uDE0A",
        "recipient" : "JY6HQlltFCUqps3YDzGYLat7YLC3",
        "sender" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2"
      },
      "-KN8Ql8-ONrsL3TdWfFO" : {
        "message" : "\uD83C\uDF82\uD83C\uDF82\uD83C\uDF82\uD83C\uDF82\uD83C\uDF82\uD83C\uDF82happy birthday",
        "recipient" : "JY6HQlltFCUqps3YDzGYLat7YLC3",
        "sender" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2"
      },
      "-KN8QwIt0x08O-_Y4Sc5" : {
        "message" : "Thank you dear\uD83D\uDE18",
        "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2",
        "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3"
      },
      "-KN8R5jX9ZKiFBpGhFd2" : {
        "message" : "\uD83D\uDE03",
        "recipient" : "utb0d5LBQ0VOs8R0V3qJmNxeT9t2",
        "sender" : "JY6HQlltFCUqps3YDzGYLat7YLC3"
      }
    }
  },
  "users" : {
    "JY6HQlltFCUqps3YDzGYLat7YLC3" : {
      "avatarId" : 1,
      "connection" : "offline",
      "createdAt" : "1469036893226",
      "firstName" : "Doggies Home",
      "userEmail" : "doggieshome007@gmail.com"
    },
    "utb0d5LBQ0VOs8R0V3qJmNxeT9t2" : {
      "avatarId" : 1,
      "connection" : "offline",
      "createdAt" : "1469036965579",
      "firstName" : "Mobiliya AR",
      "userEmail" : "armobiliya@gmail.com"
    }
  }
}

【讨论】:

    猜你喜欢
    • 2019-01-19
    • 2020-03-21
    • 2019-08-10
    • 2019-04-23
    • 2018-01-10
    • 2023-02-14
    • 2019-09-06
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多