Oreo (API 26) Уведомления не получены, когда приложение находится в фоновом режиме

У меня были некоторые трудности с реализацией уведомлений для API 26 и выше. Уведомление приходит, когда приложение открыто, но уведомления не поступают, когда приложение находится в фоновом режиме или закрыто. (Я включил каналы уведомлений в соответствии с документацией)


person Vinu Polly    schedule 27.05.2018    source источник
comment
Это высокоприоритетный толчок?   -  person Sagar    schedule 27.05.2018
comment
да, я поставил его как NotificationManager.IMPORTANCE_HIGH   -  person Vinu Polly    schedule 27.05.2018
comment
@Sagar, но когда приложение закрыто, уведомления должны поступать в системный трей, если я прав, и при нажатии будет открываться определенное действие клика, если я не ошибаюсь   -  person Vinu Polly    schedule 27.05.2018


Ответы (2)


Спасибо, ребята, я нашел решение, по-видимому, минимальная версия обмена сообщениями Firebase, которую нужно использовать, — 11.2.0, при этом ориентируясь на API 26, я использовал 10,2.0.

person Vinu Polly    schedule 27.05.2018
comment
Лучший ответ среди всех заданных вопросов. - person Mitesh Jain; 07.02.2020

На основе документации:

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

Вам необходимо убедиться, что пользователь взаимодействует с приложением, иначе уведомление не будет доставлено немедленно в спящем режиме.

person Sagar    schedule 27.05.2018
comment
Но в API 25 и ниже уведомления доставляются сразу, как только я выдаю их с сервера, используя php-код, даже если приложение не запущено. Таким образом, в API 26 и выше уведомления не будут доставляться, если приложение находится в фоновом режиме/не работает? - person Vinu Polly; 27.05.2018
comment
если я изменю целевой API на 25 с 26, тогда он будет работать нормально, но для того, чтобы приложение было опубликовано в магазине воспроизведения, все приложения должны быть нацелены на API 26 до августа 2018 года. - person Vinu Polly; 27.05.2018
comment
@VinuPolly Несмотря на то, что уровень 26 имеет более строгие ограничения на фоновую обработку, в официальной документации не упоминается особый режим для уведомлений. Вам просто нужно убедиться, что создан правильный канал уведомлений и запущена какая-либо фоновая служба. - person Sagar; 27.05.2018
comment
Отображение и доставка уведомлений зависят от ОС. Просто убедитесь, что вы не нарушаете правила. - person Sagar; 27.05.2018
comment
канал уведомлений был создан, потому что он виден в настройках уведомлений, имя канала видно, и я могу редактировать настройки канала. так что я предполагаю, что создание канала является правильным. - person Vinu Polly; 27.05.2018
comment
05-27 12:42:28.899 1692-3295/? E/NotificationService: не найден канал для pkg=com.example.app, channelId=null, id=0, tag=GCM-Notification:27961960, opPkg=com.example.app, callUid=10086, userId=0, incomingUserId= 0,notificationUid=10086,notification=Notification(channel=null pri=0 contentView=null vibrate=null sound=content://settings/system/notification_sound defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE) ^^^^ Получите эту ошибку выше, когда я получаю уведомление в фоновом режиме в логарифме, когда я не устанавливаю фильтры - person Vinu Polly; 27.05.2018
comment
Эта ошибка возникает, если вы неправильно создаете уведомление. Также убедитесь, что вы используете последнюю версию библиотеки firebase. - person Sagar; 27.05.2018