Files
forkmessager/client-mobile/docs/mobile_implementation.md
T

56 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Knot Messenger Mobile — Локальная сборка и Self-Hosted OTA
Этот документ описывает процесс перехода с инфраструктуры Expo (EAS) на полностью автономную сборку и обновление.
## 1. Конфигурация проекта
### Переход на Bare Workflow
Проект настроен так, чтобы генерировать нативный Android-код локально.
- `app.json`: Обновлен параметр `updates.url` на ваш сервер.
- `google-services.json`: Добавлен конфиг Firebase (нужно заменить на ваш реальный из консоли Firebase).
### Прямой Firebase (FCM)
Вместо прокси-серверов Expo теперь используется `@react-native-firebase/messaging`.
- Токен получается напрямую через `messaging().getToken()`.
- Обработка уведомлений происходит через `setBackgroundMessageHandler`.
## 2. Инструкция по сборке (Local Build)
### Шаг 1: Генерация нативного кода
Выполните команду для создания папки `android/` на основе вашего `app.json`:
```bash
npx expo prebuild
```
### Шаг 2: Сборка APK (Gradle)
Перейдите в папку `android` и запустите сборку:
```bash
cd android
./gradlew assembleRelease
```
APK будет находиться в: `android/app/build/outputs/apk/release/app-release.apk`
## 3. Self-Hosted обновления (OTA)
### Процесс публикации:
1. Выполните экспорт бандла:
```bash
node scripts/export-updates.js
```
2. Скопируйте содержимое папки `client-mobile/dist` на ваш Nginx сервер.
3. Убедитесь, что сервер доступен по адресу: `https://my-server.com/api/v1/updates` (как указано в `app.json`).
### Проверка в приложении:
В `App.tsx` подключен `UpdateService.ts`, который:
- Проверяет наличие новой версии при каждом запуске.
- Показывает диалоговое окно с предложением обновиться.
## 4. SignalR и Фон
- Использован `expo-keep-awake` для предотвращения засыпания приложения при активном соединении.
- Определена фоновая задача `SIGNALR_BACKGROUND_TASK` через `expo-task-manager` для обработки данных в свернутом состоянии.
## 5. Требования к Nginx
Чтобы `expo-updates` корректно скачивал файлы, ваш сервер должен отдавать:
- `expo-protocol-version: 1` в заголовках.
- Правильные MIME-типы для `.js` и ассетов.