[英]Perform an action when Firebase Notification is not received by the device
我正在尝试检查服务器中是否正在调用 function 或方法并采取相应措施。
我正在创建一个基本的应用程序来通知人们他们的金融交易。 我在应用程序中使用 Flutter,在服务器端使用 NodeJS,在推送通知和 React 中使用 Firebase Cloud Messaging 来发送数据。 到目前为止,我已成功发送通知并在使用移动应用程序时为用户显示通知列表。 整个系统的工作原理如下:
getMessaging()
function 将通知发送到该设备onMessage()
和onBackgroundMessage()
监听通知。 当收到通知时,它再次调用服务器将一些通知数据存储到数据库中。我在设备收到通知后将通知存储在数据库中的原因是,我知道我发送的消息的状态,即“已送达”。 现在,如果通知在一段时间后没有“送达”,我的目标是向设备发送短信。 但是,查看工作流程,发送通知和存储通知是两个完全独立的方法,因此,我没有想法。 有什么方法可以知道是否正在调用方法/函数并采取相应的行动。 或者我应该对这种情况采取其他方法吗? (如果是,你能提供一些想法吗?)
我只是想帮助我未来有需要的自己。 感谢GrahamD为我提供了一些想法。 我的代码如何管理它的过程如下:
sendNotification()
: 这是一个POST
方法,它向移动应用程序发送通知并将来自该通知的数据存储到数据库中。 存储到数据库时,我修改我的数据 model 以增加两个字段:
status
:具有已sent
和delivered
等值messageID
:由uuid
生成的每条消息的唯一 ID。 该操作仍在使用下面的getMessaging.send().then()
运行。
updateNotificationStatus()
我没有在应用程序收到通知数据后保存通知数据,而是使用这个 function 更新status
字段。在 Flutter 应用程序中,每当应用程序收到一条消息(来自 Firebase 云消息传递的onMessage
或onBackgroundMessage
)时,我将此 function 称为PUT
方法使用随通知发送的messageId
将状态从已sent
更新为已delivered
。
getMessaging().send().then()
在sendNotification()
内部,回调.then()
在发送通知后调用另一个方法。 这个中间件 function 在设置的时间段(在代码中设置)后被调用,以检查刚刚发送的messageId
的status
。 如果status
已更改为delivered
,则不执行任何操作。 但是,如果status
保持不变(即:已sent
),那么我可以编写我想要执行的操作。
function 的来回调用还是让我头疼,解释不明白。 希望这是可以理解的,并且可以帮助其他人寻找答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.