skeeks / cms-mobile
Интеграция SkeekS CMS с мобильными приложениями: устройства и push-уведомления
Requires
- php: >=8.0
- google/auth: ^1.48
- guzzlehttp/guzzle: ^7.9
- skeeks/cms: ^6.4.9.35
- skeeks/cms-job: ^1.4
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Подключаемая интеграция SkeekS CMS с мобильными приложениями: установки, связь с авторизованным сеансом, разрешения и push-уведомления. Сайт без мобильного приложения не устанавливает этот пакет.
Пакет владеет моделями установок и результатов доставки, их миграцией,
JS-мостом Capacitor, контроллером регистрации и адаптером Firebase.
Обычные сеансы, remember-me и выход на устройствах принадлежат skeeks/cms.
Обработчики отправки используют существующую очередь skeeks/cms-job.
Состояние разработки
Реализован Android/Capacitor/FCM. iOS/APNs и другие клиенты пока не подключены; название пакета и его серверная граница не ограничены Android. Подробности настройки и ограничений — MOBILE-PUSH.md.
Установка: composer require skeeks/cms-mobile:^0.1.0.
Требуется CMS версии 6.4.9.35 или новее. Порядок получения ключа Firebase,
настройки params.php и запуска очереди описан в MOBILE-PUSH.md.
Контракт приложения
Канонический endpoint: POST /cms-mobile/push-v1/register.
Авторизация — действующий cookie-сеанс сайта в WebView, включая обычный Yii
CSRF. Поля form-urlencoded: app_id, installation_id, installation_secret,
platform, app_version, permission и token при разрешённом push.
Сервер определяет пользователя по сеансу; user_id клиента не используется.
Ответ содержит безопасные поля установки, без токена или секретов.
Версия приложения — диагностическое поле, не версия API. Совместимые
дополнения оставляют push-v1; несовместимое изменение требует новой версии
endpoint с сохранением прежней для поддерживаемых установленных приложений.
Нативный iOS-токен APNs нельзя выдавать за FCM-токен Android: новый адаптер
должен явно определить платформу и тип адреса доставки.
Проверка
php tests/user-sessions-push.php <vendor/autoload.php> проверяет регистрацию,
смену аккаунта, отзыв, конфликт токена, очистку истории, расширение карточки сеанса и
обработчик доставки на SQLite с имитатором транспорта. Реальный push требует
серверных credentials Firebase и проверки на устройстве.
node tests/bridge.cjs проверяет ротацию конфликтующего токена и ограничение
повторов при задержке его удаления нативным плагином.
Проверена отдельная установка Composer в пустой временный vendor с текущими исходниками пакета и локальным набором зависимостей рабочего проекта; мобильные тесты проходят и на этой установке. Это не проверка опубликованного релиза. Проверки SQLite/имитатора не заменяют нагрузочные конкурентные проверки MariaDB и приёмку Android с настоящим Firebase. Общий кэш access token FCM пока не введён; авторизация выполняется перед отправкой. iOS остаётся отдельным следующим этапом.