Обновление приложения без публикации в магазинах
Приложение МаркетПро обновляется автоматически, без новой публикации в App Store, Google Play и RuStore. Вы устанавливаете обновление решения на сайт, а через некоторое время приложение у покупателей получает изменения дизайна, интерфейса и функций.
Настраивать ничего не нужно: механизм включён на каждом сайте. Есть одно условие — приложение в магазинах должно быть собрано из версии решения, которая поддерживает такие обновления. Об этом ниже.
Что обновляется автоматически, а что требует публикации
Обновляется автоматически: всё, что вы видите на экранах приложения, — вёрстка, стили, логика страниц, новые функции из обновлений решения и настройки, включённые в сборку.
Требуют новой публикации в магазинах: изменения нативной части приложения:
иконка, заставка, название приложения;
ключ Firebase для push-уведомлений — см. Push-уведомления;
файл
capacitor.config.json;новые плагины, обновление Capacitor, новые разрешения.
Если в описании обновления решения сказано «требуется новая публикация приложения», значит, в нём меняется нативная часть. До публикации новой сборки приложение продолжит работать на прежней версии.
Товары, цены, баннеры, слайды и другое содержимое появляются в приложении сразу: оно получает их с сайта при каждом открытии.
Одна обязательная публикация
Обновления получают только приложения, собранные из версии решения 26.09.2 или новее. Если ваше приложение в магазинах собрано раньше, один раз соберите и опубликуйте его заново — по обычной инструкции Публикация приложений. Более ранние сборки не получают автоматические обновления, но продолжают работать.
Дальше публиковать приложение нужно только при изменениях нативной части.
Как это работает
Каждый раз, когда сайт пересобирается — после установки обновления решения или после смены настроек, которые требуют пересборки, — сервер в фоне готовит обновление для приложения. Это занимает 5–10 минут после сборки сайта. Если по сравнению с прошлой сборкой в приложении ничего не изменилось, новое обновление не публикуется.
Приложение проверяет обновление при запуске и при возврате в него, но не чаще раза в 15 минут. Найденное обновление скачивается в фоне, а применяется при следующем запуске: посреди работы экран не перезагрузится.
Обновления раздаёт ваш сайт по адресу https://<домен сайта>/app-updates/. Сторонних сервисов нет, правка nginx не нужна, если он настроен по инструкции Установка клиентской части решения.
При многосайтовости у каждого сайта своя клиентская часть, и обновления готовятся для каждого сайта отдельно.
Как проверить, что обновление пришло
Откройте в браузере https://<домен сайта>/app-updates/latest.json. Если обновление опубликовано, вы увидите короткий текст с полями bundleId и publishedAt — дата и время последней публикации.
Подробнее — по SSH. Подключитесь к серверу и перейдите в папку клиентской части (обычно /home/bitrix/www/frontend):
cd /home/bitrix/www/frontend
npm run app:updates statusКоманда покажет, какое обновление сейчас раздаётся, историю публикаций и последние строки журнала. Полный журнал — в файле frontend/.app-updates/publish.log.
Чтобы получить обновление на телефоне, откройте приложение — обновление скачается в фоне. Затем полностью закройте приложение и откройте снова.
Если обновление не приходит
latest.json отвечает «не найдено» (404)
Причина: обновление ещё не собрано или сборка завершилась ошибкой.
Решение: подождите 10–15 минут после установки обновления решения. Если не появилось — посмотрите ошибку в frontend/.app-updates/publish.log и запустите сборку вручную в папке клиентской части:
npm run app:updates publishlatest.json есть, а приложение не меняется
Причина: приложение в магазинах собрано из версии решения без поддержки обновлений.
Решение: один раз соберите и опубликуйте приложение заново, см. Публикация приложений.
Обновление пришло, а после перезапуска приложение снова старое
Причина: новая версия не запустилась на телефоне за 20 секунд. Приложение автоматически вернулось к предыдущей версии и больше не будет устанавливать это обновление.
Решение: напишите в поддержку. Опубликовать обновление повторно можно командой npm run app:updates publish -- --force, но сначала нужно найти причину.
Сменили домен сайта
Уже установленные приложения ищут обновления по старому адресу. Старый домен должен продолжать отвечать — подойдёт и редирект на новый.
Как откатить обновление
Если после обновления приложение работает с ошибками, верните предыдущую версию. Выполните по SSH в папке клиентской части:
cd /home/bitrix/www/frontend
npm run app:updates rollbackПриложения переключатся на предыдущую версию при следующем запуске. Откатанная версия сама больше не опубликуется, пока в сборке что-то не изменится.