Новое в Symfony 7.2: Уведомления на рабочем столе
desktop
в компоненте Notifier.- Pull Request: [Notifier] Support for desktop notifications via
jolicode/JoliNotif
#57683 Ahmed Ghanem
Компонент Symfony Notifier позволяет уведомлять пользователей по таким каналам, как SMS-сообщения, чат сервисы, сообщения электронной почты и push-уведомления на смартфонах. В Symfony 7.2 мы добавили новый канал desktop для отправки уведомлений на рабочий стол.
Новый канал использует внутри проект JoliNotif, поэтому сначала его необходимо установить в приложение:
composer require symfony/joli-notif-notifier
Если вы используете Symfony Flex, установка этого пакета также создаст необходимую переменную среды в файле .env
и обновит файл config/packages/notifier.yaml. Теперь вы готовы отправить своё первое уведомление на рабочий стол. Например, можно использовать его в стороннем проекте, чтобы получать уведомления о новых подписчиках:
use Symfony\Component\Notifier\Message\DesktopMessage;
use Symfony\Component\Notifier\TexterInterface;
// ...
class SomeService
{
public function __construct(
private TexterInterface $texter,
) {
}
public function notifyNewSubscriber(User $user, Subscription $subscription): void
{
$message = new DesktopMessage(
'New sale! 🎉',
sprintf('New subscriber: %s (%s)', $user->getFullName(), $subscription->getPriceAsString())
);
$texter->send($message);
}
}
Вот и всё. Теперь уведомления будут появляться на вашем рабочем столе:
Эти уведомления можно дополнительно настраивать, и в зависимости от операционной системы они могут поддерживать такие функции, как настраиваемые звуки, иконки и многое другое.
use Symfony\Component\Notifier\Bridge\JoliNotif\JoliNotifOptions;
// ...
$options = (new JoliNotifOptions())
->setIconPath('/path/to/icons/error.png')
->setExtraOption('sound', 'sosumi')
->setExtraOption('url', 'https://example.com');
$message = new DesktopMessage('Production is down', <<<CONTENT
❌ Server prod-1 down
❌ Server prod-2 down
✅ Network is up
CONTENT, $options);
$texter->send($message);