使用 Firebase 实现推送通知的最佳方式
Posted
技术标签:
【中文标题】使用 Firebase 实现推送通知的最佳方式【英文标题】:Best way to implement push notifications with Firebase 【发布时间】:2016-04-12 04:21:15 【问题描述】:我是一名 iPhone 应用程序编码员,我使用 Firebase 作为我的后端服务器。 Firebase 不支持推送通知,所以我一直试图弄清楚如何将它们包含在我的应用程序中。我读过这个问题:How to send an alert message to a special online user with firebase,但这似乎更像是一种变通方法,而不是实际的解决方案。
有关于如何做到这一点的答案吗?是否有第三方或 API 可以无缝实现此功能?
我尝试过的一个解决方案是使用 Zapier 将 Firebase 连接到 Pushover。
此时,我已经能够观察我正在编码的应用程序中的事件,然后在我的 iPhone 上的推送应用程序中获得通知。但是,理想情况下,我希望在我的应用程序中接收通知,而不是在 pushover 应用程序中,因为我不希望用户需要 pushover 才能使用我的应用程序,并且因为我希望用户收到他们自己的不同通知,而不是针对所有人的通知。
有人对我应该如何处理这个问题有建议吗?
感谢您的帮助!
编辑 这不是这个问题的重复:Does firebase handle push notifications? 因为我知道 Firebase 不直接处理推送通知。我正在寻找使用 Firebase 处理推送通知的最佳间接方式。
【问题讨论】:
Does firebase handle push notifications?的可能重复 不,这不是重复,因为我知道 Firebase 不直接处理推送通知。即使 Firebase 不直接处理它们,我也在寻找进行推送通知的方法。 @Pipiks 实际上,截至今天(2016 年 5 月 19 日),Google 刚刚将 GCM 更名为 Firebase Cloud Messaging,并提供了此功能。请参阅this 回复以获得更完整的答案。 看这里 我的演示 => Demo Code here on *** 看这里我的演示 => Demo Code here on *** 【参考方案1】:现在,Google 将 GCM 更名为 Firebase Cloud Messaging,并且现在提供这种跨平台服务。 Firebase 还提供notifications。
以下是这两种服务之间的区别:
Firebase 云消息传递提供了一套完整的消息传递 通过其客户端 SDK 和 HTTP 和 XMPP 服务器提供功能 协议。对于具有更复杂消息传递要求的部署, FCM 是正确的选择。
Firebase Notifications 是一种轻量级的无服务器消息传递解决方案 基于 Firebase 云消息传递。具有用户友好的图形 控制台和减少的编码要求,Firebase 通知让 用户轻松发送消息以重新吸引和留住用户,培养应用 增长,并支持营销活动。
如果您想要更详细的比较。阅读this。
【讨论】:
【参考方案2】:如果您希望设备到设备推送消息而不仅仅是服务器到设备,我找到的唯一解决方案是OneSignal。我能够在大约一个小时内为我的应用程序添加基本设备到设备推送消息支持,目前它是免费的。
Batch 和 Firebase 都只支持服务器到设备的推送消息,而不是您想要的聊天应用程序
【讨论】:
Batch 支持客户端推送通知,也可以直接从应用代码中使用 Transactional API。 Swift client 的基本示例。 我没有从事务 API 描述中得出它受支持的结论:“批处理事务 API 是一个 RESTful API,它允许您根据他们的设备令牌从您自己的系统向特定用户发送通知或您自己的用户 ID”我认为您自己的系统是您运行活动的服务器。此外,您需要成为 Premium、Pro 或 Enterprise 用户:“事务 API 允许您定位多达 10,000 个推送令牌,并且可供 Premium、Pro 和 Enterprise 用户使用” 一旦您可以访问一个开放的 API,您就可以从任何您想要的地方(服务器端代码或客户端代码)调用它,它对 Batch 和所有其他推送通知提供程序都有效。 嗨@n6xej,你能告诉我有关如何使用OneSignal 使用设备到设备推送消息的任何文档吗?我没有找到任何此类文件。谢谢。【参考方案3】:有几个选项:(嗯,不止几个,但这里有两个)
Parse 非常好地处理推送通知 - 他们对此非常满意,而且非常简单。但是,您可能会遇到用户和帐户方面的问题 - 取决于您的应用的用途。
你提到了Pushover。我们之前使用过他们的 API,但不是通过 Zapier。如果我没记错的话,我相信你可以简单地注册你的应用,向他们的服务器发送一个 HTTPS: 请求,然后通知从你的应用发送/发送到你的应用。
此外,您可能需要评估您是如何使用推送的,因为您可以将类似通知的事件滚动到应用程序本身。
【讨论】:
感谢@Jay,我一直在研究的一个解决方案是使用 node.js 来监听特定 Firebase 目录的更改,就像这个问题所暗示的:***.com/questions/28686138/… 但很难学习如何实现这。有没有你见过的例子? 嗨@PhilipSopher,我刚刚实现了 Parse 和 Firebase 设置——我还没有在线示例,但可以帮助解决任何具体问题。就像你提到的,你可以让 node.js 服务器监听 Firebase 数据的变化。在 Parse 中,您将用户的安装(包含他们的设备令牌)关联到 firebase 用户(例如,使用 uid)。一旦您正在监听的 firebase 数据发生变化,您的 node.js 服务器就会从 Firebase 接收到 child_added 事件,您可以在 Parse 中查找关联的用户 @liampronan 您使用 Parse 只是为了发送推送通知,还是在您的应用中有其他用途?当你有它在线时,我很乐意看到代码示例! 我不知道利用 node.js 是否真的有必要。您的应用将接收来自 Firebase 的事件,当它收到应该推送的事件时,只需将其发送到 Parse 以获取客户端推送通知。除了处理用户方面之外,这是一个非常简单的设置 - 确定哪个更适合用户身份验证;解析或 Firebase。 @liampronan 正如您所说,您如何将 Parse 用户的安装与 Firebase 用户相关联?登录时必须这样做吗?我感到困惑的另一个步骤是如何创建 node.js 侦听器。再次感谢您的帮助!【参考方案4】:这是我从 Firebase 团队得到的答案:
Firebase 目前没有推送通知功能。您可以使用 Firebase Queue 和 GCM 在您的应用中实现推送通知。队列可在您的 Firebase 应用中用于组织工作人员或执行后台工作,例如生成图像缩略图、过滤消息内容和审查数据,或将数据散播到 Firebase 数据库中的多个位置。 Google Cloud Messaging (GCM) 是一项免费服务,可让开发人员在服务器和客户端应用程序之间发送消息,它适用于 ios 和 android。
您可以使用任何 Firebase 客户端或 REST API 将包含一些数据的对象推送到 Firebase 中的 /queue/tasks 位置。在该位置收听的工作人员将自动接听并处理工作。由此,您的工作人员可以发出 GCM 推送通知。
(来自 Firebase 团队的消息结束)
~~~~~~~~~
这是我的分析:
似乎有几个解决方案,但最好的两个是:
1) 将 FirebaseQueue 与 Google Cloud Messaging 结合使用。
2) 在 Firebase 应用中利用 Parse 中的推送通知功能。
我不确定哪个更好。 Parse 似乎更加成熟,但 Firebase Queue 更容易集成到应用程序中(即,在 Firebase 上拥有一切并且不必设置 Parse 应用程序真是太好了)
无论如何,我希望这个帖子可以帮助其他人!
【讨论】:
三件事:如果我的回答对你有帮助,请采纳!不要发布您自己问题的答案 - 使用其他信息编辑您的问题或编辑答案,或发表评论。你真的需要通过 Parse Notifications 应用示例。它非常简单,只需很少的时间和精力即可集成到您的应用程序中。很高兴我们能提供帮助! 感谢@Jay 的帮助!我是 *** 的新手,并不完全了解礼仪。我只是喜欢你的帖子,但我将留下第二个答案,因为它通常可以帮助我阅读许多不同的答案,而不仅仅是一个。但再次感谢您的帮助。我已经浏览了 Parse 示例,它非常有帮助!【参考方案5】:刚刚意识到他们已经出来了:
Batch
【讨论】:
【参考方案6】:Firebase 现在内置了通知功能。 https://firebase.google.com/docs/notifications/
【讨论】:
【参考方案7】:我遇到了同样的问题,不久前设法找到了解决方案。我在下面的帖子https://***.com/a/44192515/7048719和https://***.com/a/42240984/7048719中详细介绍了我的解决方案
当应用程序进入后台时,您必须创建一个 firebase 数据服务类并使用一个共享实例将观察者保存在内存中。从那里开始,您就可以随心所欲了。
【讨论】:
以上是关于使用 Firebase 实现推送通知的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章