通过Firebase Cloud Messaging (FCM)向离线用户发送消息是否可行?

6

我正在开发一个渐进式Web应用程序(PWA),需要通过推送消息发送重要提醒。即使用户离线,也应该接收到它们。 能否使用Firebase Cloud Messaging(FCM)实现这一点(可能是预加载消息或类似的方式),还是需要为离线获取另一种路线?


1
用户离线是什么意思?如果他们的设备没有网络/信号,将无法向他们发送任何消息。因此,虽然您可以通过云函数(如Renaud所回答的)发送消息,但用户在重新联机之前将无法接收到这些消息。 - Frank van Puffelen
1个回答

4

在AL和上面Frank的评论下做出调整

可以通过Firebase Cloud Messaging (FCM)向离线设备发送“推送消息”,但是用户只有在设备再次联网时才能看到该消息。如果设备处于离线状态,就无法立即接收来自“外部世界”的任何(推送)消息。如果您想触发一些立即对离线设备可见的提醒,则必须在设备上本地进行操作,而不是依靠来自“外部世界”的推送。

因此,既然如此,如果您想使用Firebase Cloud Messaging发送消息,可以通过使用Cloud Functions从“受信任的环境”中实现。请查看此官方Firebase Cloud Function示例:https://github.com/firebase/functions-samples/tree/master/fcm-notifications

例如,当在数据库(实时数据库或Firestore)中保存新项目,修改/删除现有项目或上传文件到Storage等情况下,您可以触发此Cloud Function。


FCM需要客户端稳定的网络连接才能接收到消息。 - AL.
@AL 我不知道是否存在误解,但在撰写这篇答案时,我假设OP已经意识到消息只能到达恢复连接的设备。事实上,OP提到了“推送消息”,因此我认为他/她并不是指这些消息应该由应用程序自动生成。然而,我同意这个假设在我的回答中没有明确说明。完整起见,当我看到Frank的评论时,我认为我没有什么可补充的。请注意,我并不争论或“谈判”,我对投票下降没有任何问题 :-) - Renaud Tarnec
嘿,Renaud。我没有任何谈判或争论的意图。我愿意取消踩一下,我只是想要更清楚地了解。我读你的回答的方式是“如果我是一个新用户”和“是的”,这可能会让他们感到困惑。如果您可以指定OP(开发人员)实际上可以在设备离线时与FCM服务器进行交互,那么就应该没问题了。干杯! :) - AL.
1
@AL. 感谢你的建设性评论!我已经更新了答案。希望对可能的未来读者更加清晰明了。 - Renaud Tarnec
如果没有数据库怎么办?我正在熟悉 FCM,但是我没有任何数据库。当应用触发给定操作时,我想通过 FCM 向其他用户推送通知 - 不是准确的推送通知,而是那种叫做“数据消息”的第二种类型。在这种情况下,离线情况怎么样? - Eru
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接