假设我有一个Android应用程序,只需构建一个ListView,其内容来自随机REST API。
想象一下,现在我需要在API上有新内容时发送推送通知。最简单的方法是什么?
我对Android上的推送通知过程有点困惑。我查看了Firebase,但我不知道我是否需要Firebase上的数据库存储结果,因为新内容可通过API获得,然后触发数据库更新通知,或者如果我不这样做需要一个数据库等。
正如你所看到的,我很不清楚,所以任何帮助都非常感激。谢谢!
答案 0 :(得分:3)
实现此目标的最佳方法是使用Firebase Cloud Functions。这将帮助您在发生有趣事情时通知用户,在您的情况下,当新内容可用时。您可以使用Cloud Firestore或Firebase Realtime Database来实现此目的。在我的回答中,我将使用新的Cloud Firestore
来解释如何完成。为此我还要重新执行Firebase Authentication。这将有助于您在发生新事件时向特定用户或一组用户发送通知。
为实现此目的,请考虑按照以下步骤操作。
实施Firebase Authentication
。一旦实现,就创建一个用户集合,其中每个用户将成为用户集合中的文档。您的数据库结构应如下所示:
Firebase-root
|
--- users (collection)
|
--- uid1 (document)
| |
| --- //user properties
|
--- uid2 (document)
|
--- //user properties
除了用户详细信息,您还需要为每个用户添加tokenId
。您可以使用以下代码行简单地获得它:
String tokenId = FirebaseInstanceId.getInstance().getToken();
用户文档应如下所示:
uid1
|
--- userName: "John"
|
--- userEmail: john@email.com
|
--- tokenId: "e_wLukMfq..." //very long token
|
--- //other details
现在,在名为notifications
的用户文档中添加一个新的库选,您需要在每次新内容时添加需要发送的notification
和sender
发生。看起来应该是这样的:
uid1
|
--- 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在Cloud Functions
中编写一个函数,该函数将侦听此引用中出现的每个新通知:
"users/{uid}/notifications/{notificationId}"
出现新通知后,您可以使用sendToDevice
功能和tokenId
将通知发送给特定用户。该通知将由Android系统处理,并将显示给用户。请注意,这仅在应用程序位于backgroud
时才有效。通过实施foreground
,您可以在应用程序位于FirebaseMessagingService
时收到通知。