Мое приложение получает уведомление правильно, но не может отобразить всплывающее уведомление с полученной информацией (если приложение открыто).
Примечание: если приложение находится вфон, уведомления отображаются без каких-либо проблем.
Мой код:
Я получаю уведомление следующим способом:
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
Log.d(TAG, "From: " + remoteMessage.getFrom());
if(remoteMessage!=null)
{
String id = null;
String title = null;
String body = null;
String launchPage = null;
if(remoteMessage.getNotification()!=null)
{
title = remoteMessage.getNotification().getTitle();
body = remoteMessage.getNotification().getBody();
}
if(remoteMessage.getMessageId()!=null)
{
id = remoteMessage.getMessageId();
}
Log.i(TAG, "id: " + id);
Log.i(TAG, "title: "+ title);
Log.i(TAG, "body: " + body);
int notif_id = 0;
sendNotification(notif_id, title, body, launchPage);
}
}
затем он вызывает этот (который должен показывать уведомление, как я понимаю):
private void sendNotification(int id, String title, String messageBody, String launchPage)
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(android.R.drawable.stat_sys_download)
.setContentTitle("OMR - "+title)
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setColor(ContextCompat.getColor(this, R.color.colorPrimary))
.setChannelId(CHANNEL_ID);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createChannel(notificationManager, CHANNEL_ID);
}
Toast.makeText(this, "Received a notif...", Toast.LENGTH_SHORT).show();
//this line is not showing a notification
notificationManager.notify(id, notificationBuilder.build());
}
Уведомление Firebase
{
"data": {
"message": "data payload only used to force using OnMessageReceived() if in BACKGROUND",
"notif_id": 1
},
"to" : "e04OAVaRw30:APA91bGyv5_tt4IWRkurjlqkqNlCxTBV8oRne18tQ5puniHPItOMgg11kdt56t5jfZnasb4Ms-tH9xUgWQhHy2eM487llRtlM9_V_PoWJI9KSr6XgCaysiDyS",
"notification": {
"title": "Notification",
"body": "This is Notification 2",
"sound":"default"
}
}
Результат
- уведомление построено правильно
- звук воспроизводится правильно
- уведомление помещено в системный трей
- НОне появляется всплывающее окно с уведомлением (я должен показать специальный диалог для этого)
Моя проблема заключается в этой конкретной строке
notificationManager.notify(id, notificationBuilder.build());
, которая не в состояниипоказать уведомление
Обновление Я узнал больше об уведомлениях Android в
https://developer.android.com/guide/topics/ui/notifiers/notifications
и обнаружил, что уведомления отображаются только в ящике уведомлений без всплывающего окна (как Heads-up notifications
).
и в соответствии с этим вопросом я могу заставить уведомления отображаться в виде заголовков, если я добавил им высокий приоритет.К сожалению, это тоже не работает.