Я не получаю Push-уведомление, когда новое сообщение отправляется пользователю, а приложение находится в фоновом режиме. - PullRequest
1 голос
/ 29 марта 2019

Я делаю приложение чата, пытающееся получить push-уведомление, когда новое сообщение получено от другого пользователя, когда приложение находится в фоновом режиме, используя уведомления об отправке между устройствами Android, используя базу данных Firebase, Cloud Messaging и Node.js.

Я слежу за этим блогом. Здесь

[https://firebase.googleblog.com/2016/08/sending-notifications-between-android.html]

и ниже мой код, который я пробовал.

    @Override
public void onClick(View view) {
    if (view.getId() == R.id.btnSend) {
        String content = editWriteMessage.getText().toString().trim();
        if (content.length() > 0) {
            editWriteMessage.setText("");
            Message newMessage = new Message();
            newMessage.text = content;
            newMessage.idSender = StaticConfig.UID;
            newMessage.idReceiver = roomId;
            newMessage.timestamp = System.currentTimeMillis();
            FirebaseDatabase.getInstance().getReference().child("message/" + roomId).push().setValue(newMessage);
            sendNotificationToUser(newMessage.idReceiver,newMessage.text);
        }
    }
}
public  void sendNotificationToUser(String user, String message) {
    Map notification = new HashMap<>();
    notification.put("username", user);
    notification.put("message", message);
    FirebaseDatabase.getInstance().getReference().child("notificationRequests").push().setValue(notification);
}

Используя вышеуказанные коды, имя пользователя и сообщение сохраняются в базе данных в режиме реального времени в уведомлении.

И я действительно не знаю, как можно получить push-уведомление по этой строке кода.

    FirebaseMessaging.getInstance().subscribeToTopic("user_"+username);

И самое важное, куда мне нужно поместить приведенный выше код, чтобы он работал.

а также я создал корзину для размещения моего файла node.js.

Заранее спасибо.

1 Ответ

0 голосов
/ 29 марта 2019

РЕДАКТИРОВАТЬ: я неправильно понял вашу проблему.Убедитесь, что служба сообщений Firebase находится в вашем файле manifest.xml.Оригинал: используйте метод functions.database.ref().onCreate().Внутри параметров ref () укажите путь к вашим запросам на уведомления.

Вот базовый код в TypeScript.

export const notificationListener = functions.database
.ref('/NotificationRequests/{notification}').onCreate((snapshot, context) =>
{

try {
    admin.initializeApp();
  } catch (e) {
  }


                     //Code to send notification here



return admin.database().ref('/NotificationRequests/' + context.params.notification)
}
)

Информация, необходимая для уведомления, находится в snapshot.child('your path here').

Узнайте, почему и как это работает

...