Уведомления Firebase при закрытии приложения
я реализовал уведомление Firebase в своем приложении для Android. Когда мое приложение запущено, уведомление отображается с моим пользовательским макетом, но когда приложение не запущено, уведомление отображается с макетом по умолчанию. Как изменить макет уведомления на мой макет, когда приложение не запущено. Кроме того, я храню общие настройки, чтобы пользователь мог переключать уведомления. Но когда приложение не работает, уведомление отображается в любом случае. Как можно достичь это?
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if(SettingsFragment.getReceiceNotification()){ //if user wants to receive notification
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.push_notification_layout);
remoteViews.setImageViewResource(R.id.push_notif_icon,R.mipmap.ic_bird_black);
Intent intent = new Intent(this,MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setContent(remoteViews);
notificationBuilder.setContentTitle("Radyo Türkkuşu");
notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
notificationBuilder.setAutoCancel(true);
notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
notificationBuilder.setContentIntent(pendingIntent);
remoteViews.setTextViewText(R.id.push_title, "Radyo Türkkuşu");
remoteViews.setTextViewText(R.id.push_context, remoteMessage.getNotification().getBody());
//notificationBuilder.setLights (ContextCompat.getColor(MainActivity.context, R.color.pushColor), 5000, 5000);
notificationManager.notify(0,notificationBuilder.build());
}
}
3 ответов
ваша проблема в том, что вы используете его с лотком уведомлений.
посмотреть этот ссылке
сообщения с уведомлением и полезной нагрузкой данных, как фон, так и передний план. В этом случае уведомление доставляется в системный трей устройства, а полезная нагрузка данных доставляется в дополнительных целях Вашей деятельности запуска.
если вы используете {data:"something"}(data-message)
с {notification:"something"}(display-message)
в то время как ваше приложение находится в фоновом режиме данных будет доставлен статистам намерения, но не onMessageReceived()
метод.Я предполагаю, что вы реализуете свой код для показа уведомлений, когда приложение находится на переднем плане onMessageReceived()
является триггером, и он отображает уведомление о желании, которое вы хотите, но когда это не onMessageReceived()
нет получить триггер вместо android система будет обрабатывать его с полезной нагрузкой уведомления. Вы просто удалить {notification:"something"}(display-message/notification tray)
С вашего кода на стороне сервера, чтобы всегда обеспечивать onMessageReceived()
.
для тех, кто держит упоминание onMessageReceived()
всегда срабатывает независимо от того, что это не передний план или фон, пожалуйста, посетите это ссылке
существует два типа сообщений FCM
- уведомления
- информационное сообщение
сообщения, которые отправляются с консоли Firebase, являются уведомления. Чтобы получить сообщение в onMessageReceived () используйте Информационное Сообщение. Используйте код ниже на стороне сервера для отправки сообщения уведомления данных
{
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data" : {
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
}
ссылка https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages
ваш код не будет срабатывать, когда ваше приложение закрыто или работает в фоновом режиме. Смотри: Firebase Уведомление
Что вам нужно сделать, это проверить, как приложение запускается, коснитесь уведомления или нажмите на значок. Для этого некоторые данные должны быть добавлены в уведомление, а затем получить их при первом запуске в приложении. Если вы можете получить их успешно, это означает, что ваше приложение запускается, нажав на уведомление, то вы можете сделать то, что ты хочешь это сделать.