Мобильный клиент
Общие сведения¶
Для разработки мобильного клиента используется среда выполнения кросс-платформенных приложений Capacitor, что даёт возможность использовать единый стек технологий (JavaScript/TypeScript, HTML, CSS). Приложение интегрировано с нативными API мобильных устройств под управлением iOS и Android (файловая система, камера, биометрия, push-уведомления), а также использует существующую веб-логику и компоненты лёгкого клиента.
Сборка мобильного приложения для Android¶
Note
Проверено с Gradle 8.x и Java Development Kit 21
Установка окружения
Требуется установить Android Studio.
Сборка
Для запуска сборки нужно использовать:
Windows: ../../build-mobile-client-android.bat
Linux/MacOS: ../../build-mobile-client-android.sh
После выполнения скрипта файлы сборки .apk и .aab будут находиться в папке android/app/build/outputs.
Сборка мобильного приложения для iOS¶
Note
Проверено на актуальных версиях Xcode и соответствующих инструментах сборки.
Установка окружения
Потребуется MacOS с установленным Xcode.
Сборка
Для запуска сборки нужно использовать:
../../build-mobile-client-ios.sh
После выполнения скрипта файлы сборки .xcarchive и .ipa будут находиться в папке ios/App/build.
Debug-сборка для локального тестирования¶
Note
По умолчанию используется релизная сборка, которая исключает библиотеку jcesarmobile-ssl-skip.
Important
Использование jcesarmobile-ssl-skip допускается только для локального тестирования. В релизной сборке эта библиотека должна быть исключена, иначе приложение не пройдет публикацию в Google Play.
Чтобы собрать приложение для локального тестирования в режиме debug с использованием библиотеки jcesarmobile-ssl-skip, нужно отредактировать соответствующий скрипт:
../../build-mobile-client-android.bat— при сборке приложения Android на Windows;../../build-mobile-client-android.sh— при сборке приложения Android на Linux/MacOS;../../build-mobile-client-ios.sh— при сборке приложения iOS.
Требуется заменить строку
call npm run cap:sync:release
call npm run cap:sync:debug
В результате будет собрана версия приложения с поддержкой обхода SSL-проверки.
Запуск приложения с hot-reload¶
Для запуска dev приложения с hot-reload:
- в
index.hmlвwindow.__HOT_RELOAD__установить значениеtrue. - в
webpack.dev.config.jsустановить значение переменнойpublicPathбезlocalhost, например192.168.1.6:3000. - в
capacitor.configдобавить настройкуserverс url к dev серверу. - в
app-local-server.jsonдобавить к настройке"AllowedCorsOrigins"адрес dev сервера, напримерhttp://192.168.1.6:3000. - для запуска сервера в студии нужно добавить аргументы командной строки в настройках запуска, например
--urls http://192.168.1.6:5000.
Изменение стартовой страницы в мобильном приложении¶
- требуется собрать проект
mobile-start-page, для этого необходимо перейти в папку проекта, выполнив командуcd ./mobileTools/mobile-start-page/. - выполнить
npm i. - выполнить
npm run build. - перейти в
Tessa.Web.Serverиспользуя командуcd ../.., затем, собрать и запустить приложениеnpx cap run android.
Атрибуты¶
Зарезервированные атрибуты для html шаблонов, используемых в мобильном приложении
-
data-placeholder- атрибут, используемый для замены дочернего узла на узел, указанный в файле с мета-информацией. Для этого атрибута важно указывать значение, так как это значение будет использовано как ключ, под которым хранится новое значение.Example
<b data-placeholder="BundlePush_HeaderTitle">Ошибка</b>. ТекстОшибкаузлаbбудет заменен на новый узел, который хранится в файле с мета-информации под ключомBundlePush_HeaderTitle. -
data-bundlepush-error-message- атрибут, используемый для замены дочернего узла на узел, указанный в файле с мета-информацией. Значение атрибута не используется, так как ключ для поиска в файле с мета-информацией формируется в зависимости от ошибки. -
data-open-url-in-browser- указывает, что нажатие на узел с этим атрибутом требует открытия некой ссылки в браузере. Данный атрибут требуется использовать только вместе с атрибутомhref. Значение атрибута не используется. -
data-send-app-log-files- указывает, что нажатие на узел с этим атрибутом приведет к поднятию системного окна по отправке файлов (логов приложения) в стороннее приложение. Значение атрибута не используется. -
data-close-view- указывает, что нажатие на узел с этим атрибутом приведет к закрытию webView, отображающий данный html-код. Значение атрибута не используется.
Приоритеты атрибутов
У одних и тех же узлов могут быть указаны несколько кастомных атрибутов, которые требуют разной обработки. Во избежание путаницы установлены некоторые приоритеты для атрибутов:
data-send-app-log-files(наивысший приоритет).data-open-url-in-browser(средний приоритет).data-close-view(наименьший приоритет).
Example
<b data-open-url-in-browser="true" href="https:\\..." data-send-app-log-files="true">Ошибка</b>. Так как присутствует атрибут data-send-app-log-files, то нажатие на узел b приведет к отправке логов приложения, другие атрибуты будут игнорироваться.
Deep link¶
Deep link имеет следующую структуру:
- обрабатываем ссылку следующего ввида -
{schema}://OpenURL?Domain={Base64Domain}&Pathname={Base64Pathname}; schema- схема приложения должна иметь видtessamobile;Base64Domain- это URL видаhttps://moblie-dev-win/tessa/webв формате base64;Base64Pathname- это строка вида/card/6ad668c5-a9a0-4bec-8326-fdea7d23a4efв формате base64.
Linux¶
- Для работы mobile client c сервером на linux, нужно настроить CORS, для этого необходимо внести изменения в файл
app.json. Если была произведена установка согласно документации по стандартному пути и папки не переименовывались, то файл будет расположен по следующему пути/home/{user}/tessa/web/app.json, гдеuser- имя учетной записи.
В файле необходимо указать следующие параметры:"CookiesSameSite": "None","AllowedCorsOrigins": ["capacitor://localhost", "https://localhost"]. Если же нет возможности подключиться через localhost к серверу, то нужно добавить адрес сервера к вышеуказанному списку. Например,"https://*.ngrok-free.app","capacitor://*.ngrok-free.app".
Рекомендуемые настройки и расширения VSCode¶
.vscode/settings.json.sampleрекомендуемые базовые настройки дляVSCode..vscode/extensions.jsonрекомендуемые расширения дляVSCode.
Скрипты¶
npm run start- запускает webpack-dev-server с hot-reload.
Для правильной работы веб-сервис должен быть запущен с флагом DevelopmentHot:
cd "C:\Tessa\web"
$Env:ASPNETCORE_ENVIRONMENT = "DevelopmentHot"
./Tessa.Web.Server.exe
Чтобы подключиться с устройства, веб-сервис должен быть запущен с дополнительными настройками:
cd "C:\Tessa\web"
$Env:ASPNETCORE_ENVIRONMENT = "DevelopmentHot"
$Env:WEBPACK_PUBLIC_PATH = "//192.168.1.1:3000"
./Tessa.Web.Server.exe http://192.168.1.1:5000
Для запуска по другому порту:
npm run start '--' --port 9000
cd "C:\Tessa\web"
$Env:ASPNETCORE_ENVIRONMENT = "DevelopmentHot"
$Env:WEBPACK_PUBLIC_PATH = "//0.0.0.0:9000"
./Tessa.Web.Server.exe
-
npm run start:refresh- запускает webpack-dev-server с react-refresh. -
npm run build- сборка бандла в прод режиме. В бандле будет только код платформы и платформенные расширения. -
npm run sdk-build- сборка расширений типового проекта. После сборки расширения будут вwwwroot/extensions. -
npm run type-check- проверка корректности типизации. -
npm run lint-check- проверка линтером для@tessaпакетов. -
npm run test-check- запуск тестов для@tessaпакетов. -
npm run analyze- запуск анализатора бандла (для проверки в какой чанк какой модуль попал).