当前位置: 首页 > 知识库问答 >
问题:

如何在Firebase FiRecovery Android发生变化时实现通知?

单于旭东
2023-03-14

有两种类型的应用程序,一种将由用户使用,另一种将由我(即所有者)使用。因此,每当任何用户将内容(数据)添加到Cloud FiRecovery数据库时,我都希望收到通知。简而言之,每当Cloud FiRecovery数据库发生变化时,如何发送通知?

共有1个答案

商佑运
2023-03-14

实现这一点的最简单方法是为Firebase使用云函数。这将帮助您在发生有趣的事情时通知用户,在您的情况下,用户将在何时向数据库添加内容(数据)。为了使其正常工作,您需要实现Firebase身份验证。这将帮助您在发生新情况时向特定用户或一组用户发送通知。

因此,请考虑遵循以下步骤。

首先,实施Firebase身份验证。一旦实现,就创建一个用户集合,其中每个用户都是用户集合中的文档。您的数据库结构应如下所示:

Firebase-root
    |
    --- users (collection)
          |
          --- uid1 (document)
          |    |
          |    --- //user properties
          |
          --- uid2 (document)
               |
               --- //user properties

除了用户详细信息之外,还需要为每个用户添加一个令牌ID。您只需使用以下代码行即可获得:

String tokenId = FirebaseInstanceId.getInstance().getToken();

用户文档应如下所示:

uid1 (document)
 |
 --- userName: "John"
 |
 --- userEmail: john@email.com
 |
 --- tokenId: "e_wLukMfq..." //very long token
 |
 --- //other specific user details

其次,在用户文档中创建一个名为notifications的新集合,您应该在其中添加需要发送给管理员的所有通知。所需的属性是通知消息和发送者。用户文档应如下所示:

    uid1 (document)
     |
     --- userName: "John"
     |
     --- userEmail: john@email.com
     |
     --- tokenId: "e_wLukMfq..." //very long token
     |
     --- notifications (collection)
     |      |
     |      --- notificationId1
     |              |
     |              --- notificationMessage: "My Notification"
     |              |
     |              --- fromUser: "My Notification"
     |
     --- //other details

请参阅托管在用户文档下方的嵌套通知集合。

现在需要使用Node。js在云函数中编写一个函数,用于侦听此引用中出现的每个新通知:

    "users/{uid}/notifications/{notificationId}"

下面是一个简单的示例,说明如何编写节点。js函数。

出现新通知后,您可以使用sendToDevice功能和tokenId向特定用户发送通知。通知将由Android系统处理并显示给用户。注意,这仅在应用程序处于后台时有效。当应用程序位于前台时,您还可以通过实现FirebaseMessagingService来接收通知。

在我的一个教程中,我还逐步介绍了如何根据需要发送通知。

 类似资料:
  • 我发现了两种可能的方法来在Firebase实时数据库(例如在聊天应用程序中)发生更改后交付通知: > 如本博文所述,可以对Firebase使用云功能。 我在这里还发现了另一种更简单的方法,只使用一个监听数据库变化的android服务。 在尝试实施其中一种方法之前,我想知道这两种方法的利弊,因为第二种方法似乎比第一种方法简单得多。

  • 问题内容: 我使用HTML列表和CSS创建了一个水平菜单。除非您将鼠标悬停在链接上,否则一切都会正常进行。可以看到,我为链接创建了一个粗体悬停状态,现在由于粗体大小的差异,菜单链接发生了变化。 我遇到与此SitePoint帖子相同的问题。但是,该职位没有适当的解决方案。我到处都在寻找解决方案,但是找不到。当然,我不能成为唯一尝试这样做的人。 有人有什么想法吗? PS:我不知道菜单项中文本的宽度,因

  • 我在数据库中插入几个字段,我可以这样做。我已经采取了一个触发器,将数据插入到表"AFTER INSERT"事件中。 $sql3="创建触发器MySQL触发器在插入后的每一行开始插入到临时值(new.id,new.fname,new.lname,new.city,new.city);";mysqli_query($con,$sql3); 这将成功地将数据插入temp2表,但触发器中的事件不会对tem

  • 我在片段中重写onCreateOptionsMenu()方法,为任何片段创建单独的操作条:

  • 问题内容: 有人知道改变视图后如何使角度触发事件吗?还是在请求并下载视图时正确?我正在尝试为页面更改添加加载动画。 问题答案: 看一下这个线程,看起来好像是添加此类事物的好地方。 这个小提琴显示了一个很好的示例,说明了在何处添加代码以启动/停止Ajax请求的微调器。这个小提琴是类似的,但实际上显示并隐藏了“ Loading …” div。 如果你只是想显示微调时的看法改变,你可以限制你的开始/停止

  • 问题内容: 我想使用XMPP,以便我的应用程序将更新发送到Android手机(1.5及更高版本)。我非常想使用XMPP将推送通知发送到电话。 我将如何实现这一目标。目前,我的Web应用程序正在使用许多servlet在apache tomact上运行,因此android手机可以访问信息,但是我发现很难理解如何实现XMPP,以便可以将信息从服务器推送到客户端( android手机)。 我已经通过Goo