繁体   English   中英

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

[英]Perform an action when Firebase Notification is not received by the device

我正在尝试检查服务器中是否正在调用 function 或方法并采取相应措施。

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

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

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

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

sendNotification()

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

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

该操作仍在使用下面的getMessaging.send().then()运行。

updateNotificationStatus()

我没有在应用程序收到通知数据后保存通知数据,而是使用这个 function 更新status字段。在 Flutter 应用程序中,每当应用程序收到一条消息(来自 Firebase 云消息传递的onMessageonBackgroundMessage )时,我将此 function 称为PUT方法使用随通知发送的messageId将状态从已sent更新为已delivered

getMessaging().send().then()

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

function 的来回调用还是让我头疼,解释不明白。 希望这是可以理解的,并且可以帮助其他人寻找答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM