设备未收到 Firebase 通知时执行操作

问题描述 投票:0回答:2

我正在尝试检查服务器中是否正在调用某个函数或方法并采取相应的行动。

我正在创建一个基本应用程序,通知人们他们的金融交易。我使用 Flutter 作为应用程序,使用 NodeJS 作为服务器端,使用 Firebase Cloud Messaging 用于推送通知,使用 React 来发送数据。到目前为止,我已经成功地在使用移动应用程序时发送通知并为用户显示通知列表。 整个系统的工作原理如下:

  1. 消息是从 React 网站编写和发送的,
  2. 网站调用服务器的POST请求发送通知,
  3. POST 请求然后从 Firebase API 调用
    getMessaging()
    函数,将通知发送到该设备
  4. 移动应用程序使用
    onMessage()
    以及
    onBackgroundMessage()
    监听通知。当收到通知时,它会再次调用服务器将一些通知数据存储到数据库中。

我在设备收到通知后将通知存储在数据库中的原因是为了让我知道已发送消息的状态,即“已发送”。现在,我的目标是,如果在一段时间后通知未“送达”,则向设备发送短信。但是,从工作流程来看,发送通知和存储通知是两个完全独立的方法,因此,我没主意了。有什么方法可以知道是否正在调用方法/函数并采取相应的操作。或者我应该对这种情况采取其他方法? (如果有的话可以给点意见吗?)

mongodb flutter push-notification firebase-cloud-messaging nodejs-server
2个回答
1
投票

我只是想帮助未来有需要的自己。 感谢 GrahamD 为我提供了一些想法。我的代码如何管理它的过程如下:

sendNotification()

这是一种

POST
方法,可将通知发送到移动应用程序并将该通知中的数据存储到数据库中。存储到数据库时,我修改数据模型以再添加两个字段:

  1. status
    :具有
    sent
    delivered
  2. 等值
  3. messageID
    :由
    uuid
    生成的每条消息的唯一ID。

动作仍在进行,下方有

getMessaging.send().then()

updateNotificationStatus()

我没有在应用程序收到通知数据后保存通知数据,而是使用此函数仅更新

status
字段。在 Flutter 应用程序中,每当应用程序收到消息(来自 Firebase Cloud Messaging 的
onMessage
onBackgroundMessage
)时,我都会将此函数称为
PUT
方法,以通过使用以下方法将状态从
sent
更新为
delivered
messageId
与通知一起发送。

getMessaging().send().then()

sendNotification()
内部,回调
.then()
在发送通知后调用另一个方法。在设定的时间段(在代码内部设置)后调用此中间件函数来检查刚刚发送的
status
messageId
。如果
status
已更改为
delivered
,则不执行任何操作。但是,如果
status
保持不变(即:
sent
),那么我可以编写我想要执行的操作。

函数调用的来回仍然让我解释和理解起来很头疼。希望这是可以理解的,并且可以帮助其他人寻找答案。


0
投票

我已经使用 Firebase 实现了 Web 应用程序的推送通知通知,因此某些设备我没有收到设备通知,但我在所有设备上收到正常通知,如果您对此有任何想法,请告诉我。

我已按照以下 URL 获取推送通知 https://www.audreyhal.com/blog/push-notifications-with-firebase-in-react

而且我还多次调试了代码,我没有收到错误

© www.soinside.com 2019 - 2024. All rights reserved.