FCM - Как перейти к определенному действию при нажатии на уведомление в системном трее
Мы используем FCM для показа push-уведомлений конечному пользователю. FCM успешно поднял уведомление, и пользователь видит уведомление из системного трея. Я использую консоль FCM Notification Composer для тестирования.
Я буду держать свое приложение в фоновом режиме и отправлять сообщения с консоли FCM.
Требуется перейти к определенной активности в приложении, когда пользователь нажимает на сообщение в области уведомлений (когда приложение находится в фоновом режиме). Прямо сейчас по умолчанию открывается страница запуска приложений.
Я не мог получить правильный ответ от Google. Большинство ответов для GCM и большинство из них не являются рабочим решением. Я не нашел нужный документ на странице FCM.
Обработка уведомлений в фоновом приложении
Когда ваше приложение находится в фоновом режиме, Android направляет уведомления в системный трей. При нажатии на уведомление пользователя открывается панель запуска приложения по умолчанию.
FCM page -
Это включает в себя сообщения, которые содержат как уведомления, так и полезные данные (и все сообщения, отправленные из консоли уведомлений). В этих случаях уведомление доставляется в системный трей устройства, а полезная нагрузка данных доставляется в дополнениях к назначению вашего средства запуска.
Спасибо
3 ответа
Вы должны добавить <intent-filter>
с действием внутри AndroidManifest.xml и установить click_action
в уведомлении, это будет работать, когда приложение находится в фоновом режиме или убито.
Вы можете обратиться по ссылке ниже:
Вы должны справиться с этим самостоятельно и не позволять 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());
}