推送内容更改通知
Posted
技术标签:
【中文标题】推送内容更改通知【英文标题】:Push notifications on content change 【发布时间】:2018-06-26 05:01:12 【问题描述】:假设我有一个 android 应用程序,它只是使用从随机 REST API 获取的内容构建一个 ListView。
现在想象一下,当 API 上有新内容可用时,我需要发送推送通知。最简单的方法是什么?
我对 Android 上的推送通知流程有点困惑。我看了一下 Firebase,但我不知道我是否需要在 Firebase 上建立一个数据库来存储结果,因为可以通过 API 获得新内容,然后触发数据库更新通知,或者我是否不需要需要数据库等。
如您所见,我不清楚,因此非常感谢您的帮助。谢谢!
【问题讨论】:
如果您使用 .NET 作为 API,那么您应该使用 SignalR 您不需要数据库,您实际上可以在您的 web-api 中创建一个 api,当添加新内容时触发该 api,然后使用该 api 调用 firebase 并非常轻松地发送通知 我无权访问 API 代码。我正在使用第 3 方 API(即流行的天气 REST API)。那么在这种情况下我该怎么办?我是否需要添加某种网关,例如调用天气 API 的 Node.js API,然后将结果返回给我的应用程序? (这样我就可以从 Node API 触发通知) 如果您无权访问 API,那么 something's 必须不断轮询它以查找更新/更改,因此它要么是您的客户端/应用程序或然后通知客户端/应用程序的服务器(例如在节点中)。您可能还应该检查 3rd-party API 的 Ts&Cs,以确保您被允许以这种方式使用它。 您可以根据显示您的通知使用firebase远程配置 【参考方案1】:实现此目的的最佳方法是使用Firebase Cloud Functions。这将帮助您在发生有趣的事情时通知用户,在您的情况下,当有新内容可用时。您可以使用Cloud Firestore 或Firebase Realtime Database 来实现此目的。我将在回答中向您解释如何使用新的Cloud Firestore
来完成。为此,我建议您也实施Firebase Authentication。这将帮助您在发生新情况时向特定用户或一组用户发送通知。
为了实现这一点,请考虑按照以下步骤操作。
实施 Firebase 身份验证。一旦实现,就创建一个用户集合,其中每个用户都将是用户集合中的一个文档。您的数据库结构应如下所示:
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 系统处理并显示给用户。请注意,这仅在应用程序位于 background
时有效。通过实现FirebaseMessagingService
,您还可以在应用位于foreground
时收到通知。
【讨论】:
谢谢,我试试看。 你达到你想要的了吗?一切都好吗? 嗨,Alex,感谢您抽出宝贵时间。实际上这是出于个人训练的目的,所以它在我的日程安排中是次要的。我之前必须为我的公司工作:D 我会及时通知你 好的,让我知道!干杯! 是的,谢谢您的宝贵时间。在您的帖子获得帮助并使用 Firebase 文档后;我终于让推送通知工作了:)以上是关于推送内容更改通知的主要内容,如果未能解决你的问题,请参考以下文章