【问题标题】:Firebase Cloud Messaging via Cloud Functions via Http requestsFirebase 云消息通过 Cloud Functions 通过 Http 请求
【发布时间】:2019-03-18 08:56:35
【问题描述】:

尝试使用 firebase 云消息传递为我的 android 应用程序实现消息传递过程,我遇到了一些限制,因为我没有任何服务器并且不打算拥有任何类型的服务器。

我打算做什么: - 使用 okhttp 创建所有需要的 http 请求表单。 - 将所需的 http 请求发送到我的云功能 - 这些功能将从 Firestore 获取所需数据并响应请求,同时实际将云消息发送到主题。

这是我想出的实现我自己的 REST API 的唯一方法,因为我无法在我的 android 客户端应用程序中使用 Admin SDK 并且没有任何处理服务器。

是否有任何例子,教程做同样的事情?欢迎任何建议。

【问题讨论】:

    标签: android firebase firebase-cloud-messaging google-cloud-firestore


    【解决方案1】:

    您确实不需要服务器来实现您的功能需求。正如您在问题中提到的那样,您可以很好地使用 Cloud Functions(无服务解决方案)。

    当您想要发送 Firebase 云消息通知时,您可以:

    1. 将通知的内容写入新的 Firestore 文档(写入特定的文档集合)。与实现 HTTP 云函数来发送数据相比,这里的优势在于您保留了请求的历史记录,并且由于您将使用 Android SDK for Firestore,因此编码更容易一些。
    2. 设置在此集合中创建新文档并发送通知时触发的云函数。

    有一个官方示例 Cloud Function 可以做到这一点,请参阅 https://github.com/firebase/functions-samples/tree/Node-8/fcm-notifications。该函数的代码在https://github.com/firebase/functions-samples/blob/Node-8/fcm-notifications/functions/index.js

    在您的情况下,您将触发 Cloud Function,如下所示:

    exports.sendNotification = functions.database.ref('/notificationsRequests/{requestUid}')
    .onCreate(async (snap, context) => {})
    

    https://firebase.google.com/docs/functions/firestore-events


    请注意,您会在 SO 上找到很多涵盖此主题的问题和答案:https://stackoverflow.com/search?q=firestore+send+notifications

    【讨论】:

    • 实际上,我已经浏览了许多针对该确切用例的示例,我不打算为此保留历史记录,我现在所做的是:拥有一个文档 brodcasts/public,每次都会更新我发送的新通知和触发了 onUpdate 的云功能。我想我会坚持这个实现,但使用 http 请求最终将使我免于将所有用户广播写入 firestore:用户通过 http 发送他的广播,云功能将其发送给所需的主题订阅者
    【解决方案2】:

    经过一些研究,我发现 firebase 提供的正是我正在寻找的命名可调用函数

    https://firebase.google.com/docs/functions/callable

    通过这种方式,人们可以交换通知,而无需实际通过任何数据库进行传输。希望这可以帮助某人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      • 2016-12-08
      • 2020-09-23
      相关资源
      最近更新 更多