Я вижу, что вы принудительно отображаете уведомление при срабатывании onMessage
, вам не нужно этого делать, если приложение работает в фоновом режиме, уведомления будут создаваться автоматически.
onMessage
запускается, когда вы получаете уведомление, и приложение открыто и работает на переднем плане. Например, у вас открыто приложение Gmail и получено новое электронное письмо, в этом случае вам не нужно, чтобы уведомление появлялось в области уведомлений. Приложение может решить обработать его напрямую, и onMessage
запускается сразу после получения уведомления - это хорошо, так что вам не нужно продолжать пул сервера.
onResume
и onLaunch
немного отличаются - эти два события не запускаются при получении уведомления. Они запускаются только тогда, когда пользователь выбирает / нажимает на уведомление в области уведомлений. Таким образом, в обоих случаях приложение в настоящее время скрыто, либо вообще не запущено (завершено), либо приложение находится в фоновом режиме - не отображается. В этом случае уведомление поступает на телефон и автоматически помещается в область уведомлений (для этого не нужно кодировать «showNotification
»). В этом состоянии пользователь может видеть уведомление, но само приложение еще не знает о нем.
Приложение узнает об уведомлении, только когда пользователь выберет одно из этих уведомлений.
Если приложение вообще не работает, onLaunch
будет срабатывать, когда пользователь нажимает на уведомление. Это означает, что приложение не было запущено, и в результате уведомления оно должно было «запускаться с нуля».
Если приложение находится в фоновом режиме, onResume
будет срабатывать, когда пользователь выбирает уведомление, возвращая приложение в состояние переднего плана.
EDIT:
Как указал @boformer, это относится только к сообщениям «Уведомление». Если вы отправляете сообщения «Данные», уведомления не создаются, и сообщения доставляются только через onMessage
. Подробнее в плагине readme и firebase docs .