簡體   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