Как обрабатывать уведомления из системного трея

#android #android-notifications #firebase-notifications

#Android #android-уведомления #firebase-уведомления

Вопрос:

Я знаю, что обрабатывать сообщения в фоновом приложении

Когда ваше приложение работает в фоновом режиме, Android направляет уведомления в системный трей. Пользователь, нажимая на уведомление, по умолчанию открывает панель запуска приложений.

Сюда входят сообщения, содержащие как уведомления, так и полезную нагрузку данных. В этих случаях уведомление доставляется в системный трей устройства, а полезная нагрузка данных доставляется в дополнение к намерению вашей пусковой установки.

но мое приложение должно определять, когда уведомление поступает для выполнения операции (получения данных с сервера), потому что при поступлении уведомления должны загружаться данные, но, когда приложение работает в фоновом режиме, я не могу знать, что уведомление поступает, пока пользователь не нажмет уведомление, приложение откроется, и я загружу данные, но в некоторых случаях пользователь не нажимает уведомление, поэтому данные не загружены

итак, мой вопрос: как узнать, когда приложение получает уведомление в случае, если приложение работает в фоновом режиме?

Комментарии:

1. Отправьте полезную нагрузку только для данных.

2. да, я знаю эту опцию, но нет способа отправить обычным способом и узнать, когда системный трей обрабатывает уведомления?

3. Я вижу. Вы должны отредактировать свой вопрос, чтобы узнать, как обрабатывать уведомления из системного трея? или что-то в этом роде.

Ответ №1:

Вы получите вызов метода обратного onMessageReceived вызова в FirebaseMessagingService в любом случае, если приложение находится в фоновом режиме или на переднем плане, если и только если вы отправляете данные по клавише «data». Например —

 {
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
  "Nick" : "Mario",
  "body" : "great match!",
  "Room" : "PortugalVSDenmark"
      }
   }
}
  

Пользовательское уведомление можно отобразить, создав его в методе обратного вызова onMessageReceived