假设我有一个 Android 应用程序,它仅使用从随机 REST API 获取的内容构建 ListView。
想象一下,现在我需要在 API 上有新内容时发送推送通知。最简单的方法是什么?
我对 Android 上的推送通知过程有点困惑。我查看了 Firebase,但我不知道我是否强制需要 Firebase 上的数据库来存储结果,因为新内容可以通过 API 获得,然后触发数据库更新通知,或者如果我不需要需要数据库等
如您所见,我对此非常不清楚,因此非常感谢您的帮助。谢谢 !
实现这一目标的最佳方法是使用Firebase 云功能 https://firebase.google.com/docs/functions/use-cases。这将帮助您在发生有趣的事情时(在您的情况下,当有新内容可用时)通知用户。您可以使用云Firestore https://firebase.google.com/docs/firestore/ or Firebase 实时数据库 https://firebase.google.com/docs/database/为了达成这个。我将在我的回答中向您解释如何使用新的Cloud Firestore
。为此,我建议您也实施Firebase 身份验证 https://firebase.google.com/docs/auth/。这将帮助您在发生新情况时向特定用户或一组用户发送通知。
为了实现这一目标,请考虑遵循以下步骤。
-
实施 Firebase 身份验证。一旦实现,就创建一个用户集合,其中每个用户都将是用户集合中的一个文档。您的数据库结构应如下所示:
Firebase-root
|
--- users (collection)
|
--- uid1 (document)
| |
| --- //user properties
|
--- uid2 (document)
|
--- //user properties
除了用户详细信息之外,您还需要为每个用户添加tokenId
。您可以使用以下代码行非常简单地获得它:
String tokenId = FirebaseInstanceId.getInstance().getToken();
用户文档应该如下所示:
uid1
|
--- userName: "John"
|
--- userEmail: [email protected] /cdn-cgi/l/email-protection
|
--- tokenId: "e_wLukMfq..." //very long token
|
--- //other details
-
现在,将一个新集合添加到名为的用户文档中notifications
,您需要在其中添加notification
你需要发送和sender
,每次有新的事情发生。它应该看起来像这样:
uid1
|
--- userName: "John"
|
--- userEmail: [email protected] /cdn-cgi/l/email-protection
|
--- tokenId: "e_wLukMfq..." //very long token
|
--- notifications (collection)
| |
| --- notificationId1
| |
| --- notificationMessage: "My Notification"
| |
| --- fromUser: "My Notification"
|
--- //other details
-
现在你需要使用Node.js https://nodejs.org/en/编写一个函数Cloud Functions
它将侦听此引用中出现的每个新通知:
"users/{uid}/notifications/{notificationId}"
一旦出现新通知,您可以使用sendToDevice
函数和tokenId
将通知发送给特定用户。该通知将由 Android 系统处理并显示给用户。请注意,这仅当应用程序处于background
。当应用程序位于foreground
通过实施FirebaseMessagingService
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)