设备未收到Firebase Notification时执行操作



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

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

  1. 消息由react网站组成和发送,
  2. 网站从服务器调用POST请求来发送通知,
  3. POST请求然后从Firebase API调用getMessaging()函数,该函数向该设备发送通知
  4. 移动应用程序使用onMessage()onBackgroundMessage()侦听通知。当收到通知时,它再次调用服务器将一些通知数据存储到数据库中。

我在设备接收到通知后将通知存储在数据库中的原因是,这样我就知道我发送的消息的状态,即"交付"。现在,我的目标是发送短信到设备,如果通知没有"交付";然而,查看工作流,发送通知和存储通知是两个完全独立的方法,因此,我没有想法。是否有任何方法可以知道是否正在调用方法/函数并采取相应的行动。或者我应该采取其他方法来解决这个问题?(如果有,你能给点建议吗?)

我只是想帮助未来需要帮助的自己。谢谢格雷厄姆给我提供的一些建议。我的代码如何管理它的过程如下:

sendNotification():

这是一个POST方法,它向移动应用程序发送通知,并将通知中的数据存储到数据库中。当存储到数据库时,我修改了我的数据模型,增加了两个字段:

  1. status:与sent&delivered
  2. messageID:uuid生成的每条消息的唯一ID。

下面的getMessaging.send().then()操作仍在运行

updateNotificationStatus()

在应用程序接收到通知数据后,我没有保存通知数据,而是使用此函数更新status字段。在Flutter应用程序中,每当应用程序接收到消息(来自Firebase Cloud Messaging的onMessageonBackgroundMessage)时,我将此函数作为PUT方法调用,通过使用随通知一起发送的messageId将状态从sent更新为delivered

getMessaging().send().then()

sendNotification()内部,在通知发送后,回调.then()调用另一个方法。这个中间件函数在设置的时间段(在代码中设置)之后被调用,以检查刚刚发送的messageIdstatus。如果"status"已修改为"delivered",则不处理。然而,如果status保持不变(即:sent),那么我可以编写我想要执行的操作。

函数调用的来回转换对我来说仍然是一个令人头痛的问题,既要解释也要理解。希望这是可以理解的,可以帮助其他人寻找答案。

相关内容

  • 没有找到相关文章

最新更新