3.6 KiB
Pulse Push Notifications
Дата: 2026-05-09 Репозиторий: viktor138irk/SWChat Связанный клиент: viktor138irk/SWChat-App
Цель
Добавить уведомления Pulse так, чтобы пользователь получал push на Android при новых сообщениях, но сервер Matrix/Synapse не зависел напрямую от клиентского UI.
Важное решение
Уведомления делаем через отдельный серверный Push Gateway.
Схема:
Synapse / Matrix
↓ Matrix push rules / pusher
Pulse Push Gateway
↓ FCM / Android push
Pulse Android App
Push Gateway должен жить в серверном репозитории SWChat, а клиентские настройки и регистрация pusher — в SWChat-App.
Почему нужен Push Gateway
Matrix-клиент не получает push напрямую из Synapse в Firebase. Synapse отправляет push на gateway, а gateway уже отправляет уведомление в Firebase Cloud Messaging.
Это позволяет:
- не хранить Firebase-логику в Synapse;
- централизованно управлять push;
- позже добавить web push, desktop push, Telegram/dev alerts;
- контролировать payload и приватность;
- отключать/включать уведомления пользователям.
MVP Push Gateway
Минимальные функции:
- Endpoint приёма push от Synapse:
POST /_matrix/push/v1/notify
- Проверка входящего payload.
- Извлечение event/user/room/pusher данных.
- Отправка уведомления в FCM.
- Логи отправки.
- Healthcheck endpoint:
GET /health
- Конфигурация через
.env. - Отдельный контейнер в
docker-compose.yml.
Предварительные домены
Рекомендуемый домен:
push.stackworks.ru
Альтернатива внутри API:
api-chat.stackworks.ru/push
На MVP лучше отдельный поддомен push.stackworks.ru, чтобы не мешать будущему backend API.
Требования к Android-клиенту
В SWChat-App нужно:
- проверить наличие
google-services.jsonпод packageru.stackworks.pulse; - проверить Firebase project;
- включить FCM token registration;
- убедиться, что
pushNotificationsAppId = ru.stackworks.pulse; - настроить pusher URL на Pulse Push Gateway;
- проверить уведомления на debug APK;
- проверить уведомления на release APK.
Безопасность
Push Gateway не должен раскрывать текст сообщений без необходимости.
На MVP можно отправлять:
Новое сообщение
или:
Новое сообщение в Pulse
Без тела сообщения, пока не будет понятна политика приватности и E2EE.
Следующий шаг
- Проверить Android/Firebase config.
- Создать каркас
push-gatewayв серверном репозитории. - Добавить сервис в
docker-compose.yml. - Добавить
.env.exampleпеременные. - Настроить Synapse pusher/client pusher registration.
- Проверить push на тестовом аккаунте.