Уведомление базы огня белый круг проблема [дубликат]


На этот вопрос уже есть ответ здесь:

У меня проблема с Firebase Notification, Если я отправляю уведомление, когда приложение работает на экране, уведомление отображается правильно следующим образом:

Введите описание изображения здесь

Введите описание изображения здесь

Чем если я отправлю уведомление когда приложение работает в фоновом режиме, уведомление выглядит следующим образом:

Введите описание изображения здесь

Введите описание изображения здесь

Это мой FirebaseMessagingService класс

    public class AppFirebaseMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        sendNotification(remoteMessage);
    }

    private void sendNotification(RemoteMessage remoteMessage) {
        Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        int icon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? R.drawable.ic_video_label_white_24dp: R.drawable.ic_launcher;
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
        notificationBuilder.setWhen(System.currentTimeMillis());
        notificationBuilder.setColor(ContextCompat.getColor(this, R.color.colorPrimary));
        notificationBuilder.setSmallIcon(icon);
        notificationBuilder.setContentTitle(remoteMessage.getNotification().getTitle());
        notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
        notificationBuilder.setAutoCancel(true);
        notificationBuilder.setSound(defaultSoundUri);
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            Intent resultIntent = new Intent(this, MainActivity.class);
            TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
            stackBuilder.addParentStack(MainActivity.class);
            stackBuilder.addNextIntent(resultIntent);
            PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
            notificationBuilder.setContentIntent(pendingIntent);
            notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
        }

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, notificationBuilder.build());
    }
}

Почему это происходит?

2 4

2 ответа:

Это ошибка в Firebase, которая еще не решена. Ссылка здесь: https://stackoverflow.com/a/37332514/1507602

Другой альтернативой является отказ от использования консоли Firebase для отправки уведомлений, вместо этого используйте POST API, таким образом, ваше уведомление будет доставлено непосредственно в onMessageReceived(), где вы можете создать свое собственное уведомление.

чтобы отправить сообщение полезной нагрузки данных, вы должны сделать запрос curl:

HTTP POST запрос

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}

Вы можете получить сервер ключ (Айзасыз-1У...0GBYzPu7Udno5aA), из консоли firebase: ваш проект - > настройки - > настройки проекта - > облачные сообщения - > ключ сервера

Причина, почему это происходит, заключается в том, как уведомления Firebase работают, и различное поведение, когда приложение находится на переднем плане и отличается, когда в фоновом режиме:

  1. передний план-вот совместимость, с этим, что было в прошлом и GCM-вы полностью контролируете и ваш код из AppFirebaseMessagingService выполняется
  2. фон-в этом случае система / библиотека отвечает за отображение сообщения и использует для этого главный значок приложения. Если у вас есть какие-либо данные в узле данных, то он передается как намерение к основной деятельности вашего приложения (после того, как пользователь нажмет уведомление)

Из - за этого-я решил в своем приложении не использовать его как: 1. Я не могу его контролировать. 2. Используется значок приложения по умолчанию (который в моем случае также выглядел как ваш - округленный 3. Я не могу сделать дополнительные вещи с этим (в моем случае я также показывал изображение + добавление действия, а с уведомлениями Firebase-I не может сделать это, когда приложение находится в фоновом режиме)