Как организовать обновление мобильного приложения 1С без использования App Store и Google Play?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Распространение мобильных приложений через официальные магазины, такие как Google Play или App Store, не всегда удобно или возможно, особенно когда речь идет о внутренних корпоративных решениях. В таких случаях перед разработчиком встает задача организовать механизм автоматического или полуавтоматического обновления приложения собственными силами. Разберем подробно, как это реализовать, какие нюансы существуют для разных мобильных платформ и как правильно настроить серверную часть.

Метод 1: Обновление конфигурации внутри мобильной платформы

Этот способ подходит в тех ситуациях, когда на устройствах пользователей установлена стандартная мобильная платформа 1С, а само приложение добавлено в список информационных баз по сетевому пути. Рассмотрим этот механизм подробнее.

Суть метода заключается в том, что на веб-сервере (например, Apache или IIS) публикуется не само скомпилированное приложение (APK/IPA), а база данных (конфигурация). При добавлении базы на мобильном устройстве указывается URL этой публикации. Для автоматизации процесса обновления выполним следующие шаги:

  1. В настройках мобильной информационной базы на устройстве включим опцию "Перезапуск из конфигуратора".
  2. При каждом изменении метаданных на основном компьютере (в конфигураторе) выполняем повторную публикацию.
  3. При следующем запуске приложения на телефоне система автоматически проверит наличие изменений по указанному адресу. Если версия конфигурации на сервере выше, чем локальная, платформа предложит обновить конфигурацию и перезапустит приложение.

Важно понимать разницу: в данном сценарии мы обновляем только метаданные (формы, модули, макеты), но не саму мобильную платформу 1С. Данные базы (файлы .1cd) при этом сохраняются на мобильном устройстве.

Метод 2: Использование параметра UpdateURL для скомпилированных приложений

Если вы используете "Сборщик мобильных приложений" и распространяете готовые пакеты (APK для Android или IPA для iOS), механизм UpdateURL требует более детальной настройки. Простого указания пути к файлу в параметрах сборки недостаточно. Проанализируем, как работает этот процесс.

Для успешного обновления мобильная платформа ожидает найти по указанному URL не само приложение, а специальный файл описания в формате XML. Разберем структуру этого файла (например, version.xml):


<?xml version="1.0" encoding="UTF-8"?>
<update xmlns="http://v8.1c.ru/8.3/mobile/application/update">
    <version>1.0.2.5</version>
    <url>https://myserver.ru/updates/myapp.apk</url>
</update>

В этом файле мы указываем актуальный номер версии и прямую ссылку на скачивание нового пакета. Когда приложение запускается, оно обращается к этому XML-файлу, сравнивает номер версии внутри тега version с номером версии, установленным на устройстве. Если номер в файле выше, инициируется процесс загрузки.

Настройка веб-сервера: MIME-типы и протоколы

Выясним причину, по которой часто не срабатывает скачивание файла обновления даже при наличии правильного XML-файла. Основная проблема заключается в настройках веб-сервера. Если сервер не знает, как обрабатывать файлы с расширением .apk или .ipa, он может передать их как обычный текст или выдать ошибку 404/403.

Для корректной работы необходимо добавить следующие MIME-типы в настройках вашего сервера (Apache или IIS):

Кроме того, современные мобильные операционные системы, особенно iOS, требуют обязательного использования защищенного протокола HTTPS с валидным SSL-сертификатом. Использование самоподписанных сертификатов может привести к блокировке загрузки системой безопасности смартфона.

Особенности обновления на платформе Android

Для устройств на базе Android установка приложений в обход магазина (так называемый Sideloading) является стандартной функцией, но она требует соблюдения правил подписи приложений. Рассмотрим этот момент подробнее.

Система Android позволит обновить существующее приложение новым APK-файлом только в том случае, если оба файла подписаны одним и тем же сертификатом (файлом .keystore). Если при сборке новой версии вы создадите новый ключ или используете другой сертификат, пользователь получит ошибку "Приложение не установлено", так как система посчитает новую версию сторонним продуктом, конфликтующим по имени пакета.

Также не забывайте о параметре Version Code в Сборщике мобильных приложений. Это целое число, которое должно строго увеличиваться при каждом обновлении. Android ориентируется именно на него, а не на строковое представление версии (Version Name).

Особенности обновления на платформе iOS

С устройствами Apple ситуация сложнее. Для установки приложений вне App Store у вас есть два основных пути:

  1. Apple Developer Enterprise Program: Позволяет распространять приложения внутри организации без ограничений по количеству устройств.
  2. Ad Hoc распределение: Позволяет устанавливать приложение на ограниченный список устройств (до 100 штук), идентификаторы которых (UDID) должны быть заранее внесены в профиль обеспечения (Provisioning Profile).

Для реализации обновления через веб-сервер на iOS вам потребуется не только файл .ipa, но и файл манифеста в формате .plist. Ссылка в параметре UpdateURL в данном случае должна использовать специальный протокол:

itms-services://?action=download-manifest&url=https://myserver.ru/manifest.plist

В самом файле манифеста прописываются метаданные приложения и ссылка на физическое расположение .ipa файла.

Программный контроль обновления в коде 1С

Мы можем реализовать проверку обновлений более гибко, используя встроенный язык 1С. Это позволит, например, выводить пользователю информативное сообщение с описанием изменений перед началом загрузки. Посмотрим на пример логики проверки версии через HTTP-запрос:


&НаКлиенте
Процедура ПроверитьОбновление()
    Соединение = Новый HTTPСоединение("myserver.ru",,,, Неопределено, 60, Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос("/version.xml");
    
    Попытка
        Ответ = Соединение.Получить(Запрос);
        Если Ответ.КодСостояния = 200 Тогда
            ЧтениеXML = Новый ЧтениеXML;
            ЧтениеXML.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
            // Здесь должна быть логика парсинга XML и сравнения версий
            // Если версия на сервере выше, вызываем команду установки
            СистемнаяИнформация = Новый СистемнаяИнформация;
            ТекущаяВерсия = СистемнаяИнформация.ВерсияПриложения;
            // Сравниваем и предлагаем обновление
        КонецЕсли;
    Исключение
        Сообщить("Не удалось проверить обновление: " + ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Такой подход позволяет избежать автоматического поведения платформы и дает разработчику полный контроль над процессом: можно реализовать принудительные обновления для критических версий и необязательные для минорных изменений. Для организации серверной части раздачи файлов и релизов подойдёт конфигурация для централизованной доставки обновлений через HTTP-сервисы.

Использование MDM-систем и сторонних сервисов

Если парк устройств в компании значителен, разберем вариант использования систем Mobile Device Management (MDM). Такие инструменты, как Headwind MDM или специализированные решения от разработчиков антивирусного ПО, позволяют централизованно управлять установленными приложениями. Администратор просто загружает новую версию APK в панель управления, и приложение обновляется на всех целевых устройствах автоматически, часто даже без подтверждения пользователем.

Также стоит обратить внимание на сервисы дистрибуции для разработчиков, такие как AppCenter. Они предоставляют готовое SDK, которое можно интегрировать в мобильное приложение (хотя для 1С это потребует использования внешних компонент), для удобного управления версиями и получения отчетов об ошибках обновления.

Резюме по шагам для реализации обновления

Подведем итог и составим чек-лист для настройки автономного обновления:

  1. Сборка приложения: Используйте "Сборщик мобильных приложений", всегда увеличивайте Version Code и используйте один и тот же файл подписи (Keystore).
  2. Подготовка сервера: Настройте веб-сервер на работу по HTTPS, добавьте MIME-типы для расширений мобильных пакетов.
  3. Создание манифеста: Подготовьте XML-файл (для Android) или PLIST-файл (для iOS) с указанием актуальной версии.
  4. Настройка UpdateURL: Пропишите прямой путь к файлу описания версии в параметрах мобильного приложения в конфигураторе 1С перед окончательной сборкой пакета.
  5. Тестирование: Проверьте доступность файлов через обычный браузер на мобильном устройстве перед тестированием механизма внутри самого приложения 1С.

Следуя этим рекомендациям, вы сможете создать надежную систему доставки обновлений для своих мобильных решений на платформе 1С, полностью независимую от сторонних магазинов приложений.

← На главную