[英]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.