Ответ 1
Правильное решение для верхней части андроида. Фактически, сообщение с уведомлением было проблемой. Он отправляет мне объект "данных", но не "объект уведомления". Недостаток объекта "уведомление" в моем TargetActivity
не получал сообщение с помощью getIntent()
. После отправки объекта "уведомление" он решил мою проблему.
Правильный формат сообщения приведен ниже:
{
"data": {
"body": "here is body",
"title": "Title"
},
"notification": {
"body": "here is body",
"title": "Title",
"click_action": "YOUR_ACTION"
},
"to": "ffEseX6vwcM:APA91bF8m7wOF MY FCM ID 07j1aPUb"
}
Вот более понятные понятия о сообщении firebase. Я нашел его в своей команде поддержки. Firebase имеет три типа сообщений:
Сообщения оповещения. Сообщение уведомления работает на фоне или переднем плане. Когда приложение находится в фоновом режиме, сообщения уведомления доставляются на системный трей. Если приложение находится на переднем плане, сообщения обрабатываются обратными вызовами onMessageReceived() или didReceiveRemoteNotification. Это, по сути, то, что называется сообщениями "Отображать".
Сообщения данных. На платформе Android сообщение данных может работать на фоне и переднем плане. Сообщение данных будет обработано onMessageReceived(). Здесь особое внимание будет уделено платформе: на Android полезная нагрузка данных может быть восстановлена в намерении, используемом для запуска вашей активности. Чтобы разработать, если у вас есть "click_action": "launch_Activity_1", вы можете получить это намерение через getIntent() только из Activity_1.
Сообщения с полезными нагрузками уведомлений и данных: Когда в фоновом режиме приложения получают полезную нагрузку уведомления в лотке уведомлений и обрабатывают только полезную нагрузку данных, когда пользователь нажимает на уведомление. Когда на переднем плане ваше приложение получает объект сообщения с доступными полезными нагрузками. Во-вторых, параметр click_action часто используется в полезной нагрузке уведомления, а не в полезной нагрузке данных. Если он используется внутри полезной нагрузки данных, этот параметр будет рассматриваться как настраиваемая пара ключ-значение, и поэтому вам потребуется реализовать пользовательскую логику, чтобы она работала по назначению.
Кроме того, я рекомендую использовать метод onMessageReceived
(см. сообщение данных) для извлечения набора данных. Из вашей логики я проверил объект пакета и не нашел ожидаемого содержимого данных. Вот ссылка на аналогичный случай, который может обеспечить большую ясность.