Android FCM не получает уведомления, когда приложение удаляется из фона

Телефон - OnePlus3T. Конструкция кислородной ОС - 4.1.6. Приложение получает уведомление, когда приложение находится на переднем плане в фоновом режиме, но в памяти. Но не получает уведомления, когда приложение не находится в памяти, то есть вырывается из памяти. Уведомление принимается на других устройствах, имеющих версии ОС Android 4.2, 5.1.1, 6.0.1, 7.1.1, даже приложение не находится в памяти.

Просьба предложить что-нибудь. Спасибо заранее.

Ответ 1

Я также столкнулся с той же проблемой.

Два способа решения этой проблемы

1- Использование полезной нагрузки уведомления

полезная нагрузка уведомления может быть отправлена ​​с использованием тега data или тега notification.

с помощью тега data

 "data" {
  "title": "welcome",
  "description" :"to your app" ,
  "image" :"image_url",  
  "deeplink" :"deeplink",
   - -
  }

он вызовет метод FirebaseMessagingService onMessageReceived. он не будет работать на некоторых устройствах, когда приложение находится в фоновом режиме.

с помощью notification

 "notification" {
   "title":"title",
   "description" : "description",
   "click_action" :"activity to be open"
   ..
}

это обрабатывается системой android, попробуйте и покажите уведомление, в этом случае метод onMessageReceived вашего FirebaseMessagingService не будет вызывать. Неизвестно, будет показано, что даже приложение находится в фоновом режиме. один из недостатков этого - вы не можете настроить уведомление, потому что оно обрабатывается системой Android. подробнее

2- Включить автозапуск в настройках устройства

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

W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.cabipool (has extras) }

можно решить в настройке oneplus 3 → Приложения → нажмите на шестерню → последняя опция App select app auto launch → find your app enable the switch

это проблема в большинстве устройств, таких как Vivo, Oppo, xiaomi, Asus, один плюс 3.

чтобы включить автоматический запуск приложения на основе производителя устройства.

Ответ 2

Это похоже на проблему конкретного устройства.

Чтобы проверить запуск этой команды, когда приложение закрыто (после перезагрузки или после прокрутки)

adb shell dumpsys package MY-PACKAGE | grep stopped

если вы можете читать stopped=true, это означает, что производитель вашего устройства реализовал нестандартное поведение, состоящее в приложениях принудительной остановки при их прокрутке.

force-stopping очень похож на отключение приложения, пока пользователь не откроет его снова.
Когда приложение находится в этом состоянии, многие другие API Android не будут работать!  (трансляции, сигналы тревоги).

Если это проблема, обратитесь к производителю и попросите их исправить устройство.