簡體   English   中英

推送通知間隔 1 小時 android

[英]1 hour gap in push notifications android

我想在推送通知中設置 1 小時的間隔,比如當用戶收到一個通知時,我想將時間存儲在 Shared Preferences 中,當下一個通知到來時,我想檢查兩個通知中的間隔是否等於或大於1 小時后,我將向用戶顯示通知,否則不會向用戶顯示通知。 所以問題是我如何計算1小時的時間差。 請幫我。 提前致謝。

我的一個項目有同樣的要求。
您絕對可以使用WorkManager做到這一點。

對於這個解釋,
我假設您使用的是 Firebase 雲消息傳遞 (FCM)

流動:

  • 主要是使用 FCM 的數據有效負載模式。
    請注意,如果您使用 Firebase 儀表板中的 FCM,這將無法按預期工作。
    最好使用帶有有效身份驗證標頭的POST端點( https://fcm.googleapis.com/fcm/send )。
  • 覆蓋onMessageReceived()並驗證RemoteMessage是否具有有效數據且不是 null。 RemoteMessage object 中獲取數據,如下所示:
val data = remoteMessage.data
val title = "msg_title"
val message = "msg_body"

if (data.containsKey(title) && data[title]?.isNotEmpty() == true &&
    data.containsKey(message) && data[message]?.isNotEmpty() == true) {
    // Fire the WorkManager here with a One Hour Initial Delay.
}
  • 創建一個初始延遲為 1 小時的OneTimeWorkRequest實例(檢查 WorkManager 文檔)並將其分配給 WorkManager。
    例如:
Workmanager.getInstance()
           .enqueueUniqueWork("unique_work", ExistingWorkPolicy.REPLACE,
            OneTimeWorkRequest.Builder(NewStickerWorker::class.java)
                             .setInitialDelay(1, TimeUnit.HOURS)
                             // Send notification details to OneTimeWorkRequest
                                 .setInputData(Data.Builder()
                                 .putString("title", data[title])
                                 .putString("message", data[message])
                                 .build())
                            .build()
           )
  • 在您的自定義Worker中,通過inputData.getString()獲取通知titlemessage並簡單地顯示通知。

  • 要發送有效負載消息,
    Postman或您想要的任何應用程序中創建如下所示的data有效負載:

{
  "to":"/topics/YourTopic",
  "data":{
      "msg_title":"Notifications Title",
      "msg_body":"Some awesome notification message body",
      "priority" : "high",
      "sound" : "default"
  }
}
  • 確保通過FirebaseMessaging API 在您的應用程序中訂閱Topic ,並替換YourTopic有效負載中的 YourTopic。

注意:這里不使用儀表板發送消息的原因是因為如果應用程序在background ,那么 Android 系統通知托盤會立即顯示通知,這不是我們想要的。

因此,當您使用data有效負載時,
即使應用程序處於backgroundforeground ,也可以保證調用您的應用程序的onMessageReceived()

推送通知被擊中和 go。 因此,如果您想制定一個必須通過服務器端集成維護的時間表,您可以在 1 小時后或根據您的需要安排通知。

或者您可以通過隊列處理這些特定事件,然后在需要時對其進行處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM