Переопределите метод paintComponent вашей панели, чтобы вы могли выполнить индивидуальный розыгрыш. Например:
@Override
public void paintComponent(Graphics g) {
Graphics2D gr = (Graphics2D) g; //this is if you want to use Graphics2D
//now do the drawing here
...
}
Хорошо.
Пользователь может иметь несколько токенов FCM, поскольку токены привязаны к устройству и не имеют представления о сущности пользователя.
Итак, вы можете создать массив токенов внутри каждого пользовательского документа, и когда пользователь авторизуется на получение уведомления на своем устройстве, вы добавляете новый токен в этот массив.
Вы можете написать облачную функцию notifyUser, в которой вы передаете идентификатор userSender и идентификатор userRecipient. И тогда вы можете просто получить пользовательский объект userRecipient и затем вызвать функцию messaging () из SDK администратора, чтобы отправить вашу полезную нагрузку на все устройства (на основе токена пользователя).