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

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

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

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

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

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

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

FCM page - 

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

Спасибо

3 ответа

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

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

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

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

Поместите этот код внутри метода 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());
        }
Другие вопросы по тегам