28.09.2020
Запуск мобильных приложений 1С из внешних источников
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Реализовано в версии мобильной платформы 8.3.18.47
На текущий момент единственный способ запустить мобильное приложение, созданное на мобильной платформе 1С (или мобильный клиент 1С), не нажимая непосредственно на иконку приложения – через PUSH или локальное уведомление.
В версии мобильной платформы 8.3.18 появится возможность запускать мобильное приложение "1С:Предприятия" (приложение, созданное на мобильной платформе 1С, или мобильный клиент 1С) из другого мобильного приложения или с использованием некоторого URL.
Эта возможность может потребоваться для решения различных задач интеграции мобильных приложений (как внешних приложений и сервисов с мобильными приложениями 1С, так и мобильных приложений 1С между собой).
В частности, появятся новые возможности:
-
Вызов конкретной функции мобильного приложения из другого приложения.
-
Возможность использовать некоторый URL для того, чтобы открыть мобильное приложение на конкретном объекте или функции.
Примеры сценариев использования новой функциональности:
-
Пользователю пришло письмо по электронной почте (SMS, сообщение в мессенджере) c акцией по промокоду. Пользователь нажимает на ссылку «Воспользоваться», открывается мобильное приложение 1С, поле с промокодом автоматически заполняется.
-
Пользователю присылается в Документообороте (например, в письме, или через Систему взаимодействия) ссылка на документ в Клиенте ЭДО. При нажатии на ссылку запускается мобильное приложение "Клиент ЭДО" и открывается требуемый объект.
Для реализации возможности вызова мобильного приложения из другого приложения, используются глубинные ссылки
(deep linking) и механизм глубинного связывания. Глубинная ссылка - это URL, который указывает на какой-то ресурс на сайте или в приложении. А глубинное связывание - это механизм, который позволит мобильной операционной системе связать URL и мобильное приложение, установленное на устройстве.
Глубинная ссылка может быть сформирована двумя способами:
-
С использованием собственной схемы (например, myfuncapp://). В этом случае URL для вызова будет иметь вид myfuncapp://comand?params.
-
С использованием схемы HTTP(S). Этот способ предполагает, что URL глубинной ссылки принадлежит схемам http:// или https://. Работа глубинного связывания в этом случае возможна только с использованием реального веб-сайта, доступ к которому должен быть у разработчика мобильного приложения (или, более глобально, всей схемы интеграции приложения и сайта). Этот доступ необходим для того, чтобы разместить в определенном каталоге сайта (из глубинной ссылки) определенные файлы.
В модуле приложения добавлена возможность реализации нового обработчика:
ОбработкаПереходаПоНавигационнойСсылке(ДанныеПереходаПоНавигационнойСсылке, СтандартнаяОбработка)
|
В случае перехода по глубинной ссылке в мобильном приложении будет вызван этот обработчик.
Пример использования механизма
Предположим, мы хотим, чтобы наше мобильное приложение могло запускаться извне с помощью навигационных ссылок, созданных с использованием схемы myapp, а также с помощью ссылок, начинающихся с
https://my.site.com/path/for/service.
Для этого нам необходимо сделать следующее:
- Создать сайт my.site.com со всей вложенной структурой my.site.com/path/for/service и сделать его доступным по протоколу https. Кроме того, на сайте должны быть размещены определенные файлы (как было описано выше, подробнее – в документации).
- В нашей конфигурации необходимо реализовать обработчик события ОбработкаПереходаПоНавигационнойСсылке(). Этот обработчик в качестве параметров получит полную информацию о том URL, нажатие на который вызвало переход в наше мобильное приложение.
- В Конфигураторе надо указать, на какие схемы или фрагменты URL «подписывается» конфигурация (через новое свойство «Навигационные ссылки мобильного приложения»).
- В сборщике мобильных приложений нужно указать, какая конфигурация собираемого мобильного приложения будет обрабатывать какую схему или URL. Также с помощью сборщика собираемое мобильное приложение получает все настройки, которые нужны для реализации реакции приложения на глубинные ссылки.
На мобильном устройстве в ходе работы нашего приложения произойдёт следующая последовательность событий:
-
После установки на мобильное устройство приложение регистрирует в мобильной операционной системе глубинные ссылки, которое оно (приложение) может обрабатывать.
-
Когда пользователь выполняет переход по глубинной ссылке, мобильная операционная система определяет, какое приложение обрабатывает эту ссылку.
-
Найденное приложение запускается, и используемая глубинная ссылка передается в это приложение для разбора самим приложением.
-
В мобильном приложении срабатывает обработчик события ОбработкаПереходаПоНавигационнойСсылке, который и получает на вход глубинную ссылку, которая привела к запуску мобильного приложения.
Запуск мобильного приложения 1С в Android через механизм намерений (intent)
При запуске мобильного приложения 1С через URL мы можем передавать дополнительные параметры только в строковом виде. К тому же существует ограничение на длину URL (оно зависит от конкретной версии ОС).
В ОС Android мы дополнительно поддержали возможность запуска мобильных приложений 1С из других приложений через механизм намерений (intent). Это позволяет передавать в приложение различные типы данных (например, массивы), что увеличивает объем передаваемой в приложение информации.
В качестве иллюстрации приведем код на 1С (аналогичный код может быть написан на любом языке, поддерживаемом в Android):
Запуск = Новый ЗапускПриложенияМобильногоУстройства("android.intent.action.VIEW", "myappfunc://testPath?key1=" + ЧисловойПараметр); Запуск.ДополнительныеДанные.Добавить("key2", СтроковыйПараметр); Если Запуск.ПоддерживаетсяЗапуск() Тогда Запуск.Запустить(Ложь); КонецЕсли;
|
При использовании этой функциональности надо учитывать следующее:
- В настоящий момент поддерживается только действие android.intent.action.VIEW.
- Схема myappfunc:// должна быть указана как поддерживаемая для ОС Android в собираемом мобильном приложении.
В этом примере вызываемое мобильное приложение передается два параметра:
- Числовой параметр с идентификатором key1 передается непосредственно в URL глубинной ссылки.
- Строковый параметр key2 передается путем явного указания параметра в списке дополнительных данных объекта, описывающего вызов намерения.
Для реакции вызываемого мобильного приложения на этот вызов в модуле клиентского приложения должен быть описан обработчик следующего вида:
Процедура ОбработкаПереходаПоНавигационнойСсылке(ДанныеПереходаПоНавигационнойСсылке, СтандартнаяОбработка) БазоваяСсылка = ДанныеПереходаПоНавигационнойСсылке.БазоваяНавигационнаяСсылка; Путь = ДанныеПереходаПоНавигационнойСсылке.ОтносительнаяНавигационнаяСсылка; ДопДанные = ДанныеПереходаПоНавигационнойСсылке.ДополнительныеДанныеПереходаВМобильноеПриложение; Параметр1 = ДанныеПереходаПоНавигационнойСсылке.ПараметрыНавигационнойСсылки.Получить("key1"); Параметр2 = ДопДанные.Получить("key2"); Сообщение = "Произошел запуск по ссылке:" + Символы.ПС + "Базовая ссылка: " + БазоваяСсылка + Символы.ПС + "Относительный путь: " + Путь + Символы.ПС + "Параметр 1: " + Параметр1 + Символы.ПС + "Параметр 2: " + Параметр2; Сообщить(Сообщение); СтандартнаяОбработка = Ложь; КонецПроцедуры
|
Теги:
мобильная платформа
мобильный клиент
8.3.18