FCM - Как перейти к определенному действию при нажатии уведомления на панели задач

Мы используем FCM для показа push-уведомлений конечному пользователю. FCM успешно поднял уведомление, и пользователь видит уведомление на панели задач. Я использую компоновщик уведомлений консоли FCM для тестирования.

Я буду держать свое приложение в фоновом режиме и отправлять сообщения из консоли FCM.

Требование состоит в том, чтобы перейти к определенному действию в приложении, когда пользователь щелкает сообщение в трее (когда приложение находится в фоновом режиме). Прямо сейчас по умолчанию открывается страница запуска приложений.

Я не мог получить правильный ответ от Google. Большинство ответов предназначены для GCM, и большинство из них не работают. Я не нахожу нужный документ на странице FCM.

Обработка уведомлений в фоновом приложении

Когда ваше приложение работает в фоновом режиме, Android направляет уведомления на панель задач. Пользователь, нажав на уведомление, по умолчанию открывает панель запуска приложений.

FCM page - 

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

Спасибо


person JavaUser    schedule 09.10.2017    source источник


Ответы (3)


Вы должны добавить <intent-filter> с действием внутри AndroidManifest.xml и установить click_action в полезной нагрузке уведомления, тогда оно будет работать, когда любое приложение находится в фоновом режиме или убито.

Вы можете обратиться по ссылке ниже:

открыть определенное действие из уведомления Firebase

person Kuldeep Kulkarni    schedule 09.10.2017

поместите этот код в метод onMessageReceived()

 private void sendNotification(String messageBody) {
            Intent intent = new Intent(this, YOUR_TARGET_ACTIVITY.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
                    PendingIntent.FLAG_ONE_SHOT);

            Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_stat_ic_notification)
                    .setContentTitle("FCM Message")
                    .setContentText(messageBody)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setContentIntent(pendingIntent);

            NotificationManager notificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

            notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
        }
person Pawan Singh Chauhan    schedule 09.10.2017
comment
когда приложение находится в фоновом режиме, onMessageReceived() не будет срабатывать. - person JavaUser; 09.10.2017
comment
установите высокий приоритет вашего уведомления, тогда вы получите уведомление, пока приложение находится в фоновом режиме. - person Pawan Singh Chauhan; 09.10.2017

Вы должны сами обрабатывать push-уведомление и не позволять Google автоматически добавлять уведомление о статусе. По умолчанию консоль Firebase возьмет на себя доставку уведомлений о состоянии для вас и не позволит произойти чему-либо еще. В приемнике Firebase просто создайте собственное уведомление на основе шаблон данных (который вы настроили) в push-уведомлении и добавьте PendingIntent к уведомлению.

person WoogieNoogie    schedule 09.10.2017