【问题标题】:Send programmatically notification with FCM [closed]使用 FCM 以编程方式发送通知 [关闭]
【发布时间】:2020-12-04 15:07:30
【问题描述】:

我希望你一切都好,我需要一些指导,因为我是使用 Firebase 套件的云消息服务的新手。

这里有 2 个应用程序,myapp_clientmyapp_admin。会发生以下情况,使用 myapp_admin 我发布了我在 Firestore 数据库 中插入的信息并使用 myapp_client 我阅读了插入 Firestore 数据库中的此信息。

我想要的是,一旦 myapp_admin 应用程序发布了此信息,它就会向 myapp_client 的用户发送通知 应用程序谁可以打开它。

我进行了一些研究,但没有找到一个好的文档(甚至是官方文档)来解释如何在不使用 Cloud 函数的情况下通过 dart/flutter 代码以编程方式发送通知 strong>(这可能)?

你能指导我吗?我不是要您给我解决方案,而是要指导我找到实施此类操作所需的解决方案。

谢谢

【问题讨论】:

  • FCM 不支持从移动应用安全地发送消息。它需要使用后端,因此您的服务帐户凭据无法向全世界提供(这将是一个巨大的安全问题)。
  • 我可以使用云消息 API 来实现吗?
  • 您仍然需要将您的后端凭据放入您的应用程序中,这是您需要避免的安全问题。最好使用后端。

标签: flutter dart push-notification google-cloud-functions firebase-cloud-messaging


【解决方案1】:

您所描述的内容肯定需要您在 myapp_client 的后台进程中从 Firestore 中的通知集合中侦听新快照,然后在收到新数据时触发本地通知像flutter_local_notifications 这样的插件。这是一个很有帮助的article,解释了如何在 Flutter 中完成后台代码执行。

如果您希望 myapp_client 应用接收 myapp_admin 发布的数据作为推送通知,即使您的应用在后台而不在后台执行代码,唯一的与 Flutter AFAIK 非常配合的可行且经过测试的解决方案正在使用云功能。

【讨论】:

  • 我会阅读您提出的文章,看看它是否可以解决我的问题,再次感谢您。
【解决方案2】:

Nikolai 使用本地通知包和客户端订阅的描述是一个很好的解决方案。

出于好奇,您为什么要避免使用云功能? 使用 CF 是一种非常简单的方法。

  1. 管理员将信息写入firestore

  2. 使用与您的管理员写入数据的位置相匹配的集合/文档上的 onWrite 函数触发云函数。

  3. 云功能使用 FCM 向您的客户订阅的主题或单个设备发送推送通知。

【讨论】:

  • 我需要更改我的支付公式才能使用云功能,我打算稍后再做,但现在出于测试目的,这并不是很明显。但我显然计划更改我的付款计划,以便能够使用 Firebase 提供的所有服务。
  • 好吧。仅供参考,我认为 Nikolai 的解决方案将增加成本,增加 Firestore 的压力,并通过网络向/从每个客户端传递更多数据。每个客户端都必须订阅给定的快照,这些快照将计为每个快照的读取。相反,您的 CF 只会为添加的数据触发一次,然后将通知发送给“所有”适用的客户端。
猜你喜欢
  • 2019-06-20
  • 2017-01-12
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 2021-01-17
  • 1970-01-01
相关资源
最近更新 更多