0

我正在開發一個應用程序,用戶可以在其中發送私人消息給彼此。 我想要一條通知發送給用戶,當他收到一條新消息。 我所看到的每個地方都需要使用諸如FCM之類的雲服務。Android - 通過Firebase收到新的私人消息時發送通知

我存儲在火力地堡數據庫中的每個用戶收到的消息,我想知道爲什麼下面的方法是行不通的:

  1. 一旦用戶登錄,設置用戶收到的郵件數據庫的火力參考節點。

  2. 具有無限循環啓動的AsyncTask:

    2.1集OnDataChange事件聽取用戶的收到信息節點的任何變化

    2.2一旦通過OnDataChange驚動任何改變,發送通知給登錄用戶,他收到一條新消息。

這項工作?

+1

hello E.您是否希望在每封郵件中發送通知,是否像推送通知一樣?添加一些你正在嘗試的代碼,以便我們找出確切的問題。 –

+0

爲什麼要使用AsyncTask?您已經擁有Firebase,它是一個實時數據庫。 –

回答

2

總的來說,你所建議的將會起作用。 (因爲@int j表示不需要無限循環或AsyncTask,但是)

然而,用戶的電池不會持續很長時間,因此您的電池電量不會太長。讓聽衆始終監聽數據庫是不好的做法。雖然應用程序在前臺是好的,但是當應用程序在後臺時,您應該取消數據庫偵聽器的附加。這就是爲什麼你會看到許多建議你使用FCM通知用戶有消息可用的原因。

+0

謝謝親愛的先生。只是一個普遍的問題,如果我可以,如果我在一個活動(或片段)中啓動一個Firebase偵聽器,並且我調用finish()方法(或popbackstack),那麼偵聽器仍然活動,或者它與它的包含活動一起被分離/分段)? –

+0

在這種情況下,您可能會導致內存泄漏,您應該刪除onPause中的偵聽器。 –

+0

謝謝。對不起,延遲了,但是在什麼地方會是放置該數據庫監聽器的最佳位置?無論用戶使用什麼屏幕,以及應用程序位於前景/背景中,我都需要一個始終處於活動狀態的地點。 –