Files
SWChat/docs/PUSH_NOTIFICATIONS.md
T

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

Минимальные функции:

  1. Endpoint приёма push от Synapse:
POST /_matrix/push/v1/notify
  1. Проверка входящего payload.
  2. Извлечение event/user/room/pusher данных.
  3. Отправка уведомления в FCM.
  4. Логи отправки.
  5. Healthcheck endpoint:
GET /health
  1. Конфигурация через .env.
  2. Отдельный контейнер в docker-compose.yml.

Предварительные домены

Рекомендуемый домен:

push.stackworks.ru

Альтернатива внутри API:

api-chat.stackworks.ru/push

На MVP лучше отдельный поддомен push.stackworks.ru, чтобы не мешать будущему backend API.

Требования к Android-клиенту

В SWChat-App нужно:

  • проверить наличие google-services.json под package ru.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.

Следующий шаг

  1. Проверить Android/Firebase config.
  2. Создать каркас push-gateway в серверном репозитории.
  3. Добавить сервис в docker-compose.yml.
  4. Добавить .env.example переменные.
  5. Настроить Synapse pusher/client pusher registration.
  6. Проверить push на тестовом аккаунте.