Я много искал в Google и StackOverflow решения этой проблемы. Ничего действительно не сработало.
Я написал приложение для обмена сообщениями Android. Я использую уведомления только для данных FCM, поэтому всегда вызывается метод onMessageReceived
моего FirebaseMessagingService
(приложение на переднем плане, в фоновом режиме или убито из панели недавних приложений). Я вручную создаю уведомления Android для новых сообщений в этом методе. Все работало нормально: метод всегда вызывается. Когда вышел Android 8 (Oreo), я добавил каналы уведомлений и все работает нормально. Но ...
По какой-то странной причине на некоторых устройствах Android (в основном Asus и некоторых Huawei) этот метод не вызывается при удалении приложения из недавнего трея приложений. Он отлично работает, когда приложение находится на переднем плане или на заднем плане (но не убито). Я добавил в метод некоторые сообщения журнала, они никогда не появляются, когда приложение убито (удалено из панели приложений, без принудительной остановки). Другие приложения (например, WhatsApp) отлично работают на этих устройствах (они показывают уведомления, когда они удаляются из трея).
Некоторые люди говорят о методике «оптимизации», которую некоторые китайские мобильные конструкторы внедряют в свои «бюджетные» модели, чтобы создать впечатление хорошей производительности, несмотря на низкие аппаратные (RAM, CPU) спецификации. Говорят, что в этом методе приложение принудительно останавливается, когда оно удаляется из недавней панели приложений, чтобы освободить больше оперативной памяти. Я не уверен, что это правильно.
Мой вопрос:
Если это правильно, что я могу сделать, чтобы добавить мое приложение в белый список из этой техники? я хочу сказать мобильному устройству, чтобы оно не использовалось в моем приложении.
Если это не правильно, какова причина и решение моей проблемы? Как они это сделали в WhatsApp и Viber?
Обратите внимание, что я не хочу добавлять раздел "уведомления" в мое сообщение FCM. Мне нужно вручную форматировать уведомления в методе «onMessageReceived». Я использую разные стили уведомлений Android для своих уведомлений. Я не могу контролировать это, если использую сообщения FCM «уведомления» и «данные».