Зачаток мобилки
This commit is contained in:
55
client-mobile/docs/mobile_implementation.md
Normal file
55
client-mobile/docs/mobile_implementation.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# 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` и ассетов.
|
||||
Reference in New Issue
Block a user