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

Pok*_*Sah 3 java android firebase google-cloud-firestore

有两种类型的应用程序,一种将由用户使用,另一种将由我使用,即所有者.因此,只要有任何用户将内容(数据)添加到Cloud Firestore数据库,我就会收到通知.简而言之,如何在Cloud Firestore数据库发生更改时发送通知?

Ale*_*amo 16

实现此目的的最简单方法是使用Cloud Functions for Firebase.这将帮助您在发生有趣事情时通知用户,在您的情况下,当用户将内容(数据)添加到数据库时.为了使其工作,您需要实施Firebase身份验证.这将有助于您在发生新事件时向特定用户或一组用户发送通知.

因此,请考虑按照以下步骤操作.

首先,实施Firebase Authentication.一旦实现,就创建一个用户集合,其中每个用户将成为用户集合中的文档.您的数据库结构应如下所示:

Firebase-root
    |
    --- users (collection)
          |
          --- uid1 (document)
          |    |
          |    --- //user properties
          |
          --- uid2 (document)
               |
               --- //user properties
Run Code Online (Sandbox Code Playgroud)

除了用户详细信息,您还需要向每个用户添加a tokenId.你可以非常简单地使用以下代码行:

String tokenId = FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)

用户文档应如下所示:

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

其次,在名为的用户文档中创建一个新的库选notifications,您应该在其中添加需要发送给管理员的所有通知.所需的属性是notification messagesender.用户文档应如下所示:

    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
Run Code Online (Sandbox Code Playgroud)

请参阅notifications托管在用户文档下方的集合.

现在您需要使用Node.js来编写一个函数,Cloud Functions该函数将侦听此引用中出现的每个新通知:

    "users/{uid}/notifications/{notificationId}"
Run Code Online (Sandbox Code Playgroud)

是一个关于如何编写Node.js函数的简单示例.

出现新通知后,您可以使用sendToDevice功能并将tokenId通知发送给特定用户.该通知将由Android系统处理,并将显示给用户.请注意,这仅在应用程序处于此状态时才有效background.您还可以在应用程序foreground执行时收到通知FirebaseMessagingService.

我也在我的一个教程中逐步开发,如何根据需要发送通知.