0

Я разрабатываю приложение, в котором пользователи могут отправлять личные сообщения друг другу. Я хочу, чтобы уведомление было отправлено пользователю, когда он получил новое сообщение. Повсюду я смотрел, как он говорил, используя облачную службу, такую ​​как FCM.Android - Отправка уведомления после получения нового личного сообщения с Firebase

Я храню получал сообщения каждого пользователя в базе данных Firebase, я задаюсь вопросом, почему следующий метод не будет работать:

  1. При входе пользователя в систему, установите firebase ссылку на базу данных Сообщения ПОЛУЧАЛ пользователя узел.

  2. начать AsyncTask с бесконечным циклом:

    2,1 набора OnDataChange события для прослушивания любых изменений в Messages узле ПОЛУЧАЛ пользователя

    2.2 При любых изменениях насторожили OnDataChange, отправить уведомление вошедшему что он получил новое сообщение.

будет ли это работать?

+1

привет. E.Mich вы хотите получать уведомления о каждом сообщении, это как push-уведомление? Добавьте код, который вы пытаетесь, чтобы мы могли определить точную проблему. –

+0

Зачем использовать AsyncTask? У вас уже есть Firebase, которая является базой данных в режиме реального времени. –

ответ

2

Вообще то, что вы предлагаете, будет работать. (поскольку @int j говорит, что нет необходимости в бесконечном цикле или AsyncTask, хотя)

ОДНАКО! Аккумулятор пользователя не будет длиться очень долго с тем, что вы предлагаете. Это не хорошая практика, когда слушатели постоянно слушают базу данных. Хотя приложение находится на переднем плане, это хорошо, но когда приложение находится в фоновом режиме, вы должны отключить прослушиватели базы данных. Вот почему вы увидите, что многие предполагают, что вы используете FCM для уведомления пользователя о наличии сообщения.

+0

спасибо вам, дорогой сэр. просто общий вопрос, если я могу, если я инициирую прослушиватель Firebase в действии (или фрагменте), и я вызываю метод finish() (или popbackstack), является слушателем, все еще активным или он отсоединяется вместе с его активностью (/фрагмент)? –

+0

В этом случае вы можете вызвать утечку памяти, вы должны удалить прослушиватель в onPause. –

+0

Спасибо. Извините за задержку, но что тогда было бы лучшим местом для прослушивания этой базы данных? Мне нужно место, которое будет активным во все времена, независимо от того, на каком экране находится пользователь, и если приложение находится на переднем плане/фоне. –

Смежные вопросы