Обработка глубоких ссылок
Глубокие ссылки — это ссылки, которые направляют пользователей в определенный раздел приложения или на веб-страницу, если приложение не установлено. Механизм глубоких ссылок также может использоваться для обмена данными между приложениями.
У типов, наследуемых от типа КлиентскоеПриложение, существует специальный переопределяемый обработчик ПриОткрытииПоСсылке, который позволяет обрабатывать глубокие ссылки.
Пример описания в модуле приложения:
@Обработчик
метод ПриОткрытииПоСсылке(Событие: СобытиеПриОткрытииПоСсылке)
// Действия при открытии по ссылке
;
- ссылки, содержащие адрес публикации вашего приложения (свойство Публикация);
- произвольные внешние ссылки, использующие протокол HTTP/HTTPS (свойство Универсальные);
- внешние ссылки с заданным протоколом (свойство Протоколы).
- .well-known/assetlinks.json (для Android). Пример:
[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.e1c.g5rt.mobile.client", "sha256_cert_fingerprints": ["16:3F:75:64:52:44:3B:AA:4F:0A:89:1B:C2:65:0E:07:12:89:A4:58:39:BA:82:E2:84:66:B0:74:42:1D:5E:33"] } } ]
Для связывания сайта и приложения данный файл необходимо положить в корень сайта https://domain.name/.well-known/assetlinks.json.
- .well-known/apple-app-site-association (для iOS). Пример:
{ "applinks":{ "apps":[], "details":[ { "appID":"L2DZT76VE2.com.e1c.g5rt.mobile.client", "paths":["*"] } ] } }
Для связывания сайта и приложения данный файл необходимо положить в корень сайта https://domain.name/.well-known/apple-app-site-association.
Ниже будут рассмотрены примеры использования глубоких ссылок.
Пример 1. Открытие мобильного приложения и активация промокода при переходе по ссылке
Пользователю приходит на почту ссылка https://my-pizza.ru?promo=promo123&userId=12345. Необходимо, чтобы при нажатии на ссылку у пользователя открывалось приложение и активировался промокод.
В данном сценарии:- Пользователь переходит по ссылке https://my-pizza.ru?promo=promo123&userId=12345.
- Если на устройстве пользователя установлен мобильный клиент, зарегистрированный
для обработки ссылок вида https://my-pizza.ru, то
происходит его
запуск.
ВидЭлемента: МобильныйКлиент Ид: e653eb34-3bff-4d0e-b4e7-7764adf1ee39 Имя: ПриложениеПользователя ОбластьВидимости: ВПодсистеме КлиентскоеПриложение: Приложение Заголовки: Общий: ПриложениеПользователя Ресурсы: ПодсистемаОсновное::РесурсыДляСборки ВнешниеСсылки: Универсальные: - Схема: https Хост: my-pizza.ru
-
В модуле объекта КлиентскоеПриложение вызывается обработчик ПриОткрытииПоСсылке, который анализирует переданную ссылку и активирует нужный промокод.
@Обработчик метод ПриОткрытииПоСсылке(Событие: СобытиеПриОткрытииПоСсылке) пер Ссылка = Событие.Ссылка пер Параметры = Ссылка.Параметры если Параметры != Неопределено и Параметры.Содержит("promo") Событие.СтандартнаяОбработка = Ложь ПрименитьПромокод(Параметры.ПолучитьПервый("promo")) ; ;
Пример 2. Передача данных между приложениями
Менеджер склада хочет оплатить счет, однако для оплаты необходимо получить подтверждения старшего менеджера.
В данном сценарии:- Менеджер склада выставляет счет.
- В приложении менеджера создается ссылка e1c://order?action=confirm&orderId=12345, которая отправляется старшему менеджеру.
- Старший менеджер отрывает ссылку на своем устройстве.
- Если на этом устройстве установлен мобильный клиент, зарегистрированный для
обработки схемы e1c://, то происходит его
запуск.
ВидЭлемента: МобильныйКлиент Ид: e653eb34-3bff-4d0e-b4e7-7764adf1ee39 Имя: ПриложениеМенеджера ОбластьВидимости: ВПодсистеме КлиентскоеПриложение: Приложение Заголовки: Общий: ПриложениеМенеджера Ресурсы: ПодсистемаОсновное::РесурсыДляСборки ВнешниеСсылки: Протоколы: - Схема: e1c Хост: order
- В модуле объекта КлиентскоеПриложение вызывается
обработчик ПриОткрытииПоСсылке, который анализирует
переданную ссылку и открывает форму подтверждения
оплаты.
@Обработчик метод ПриОткрытииПоСсылке(Событие: СобытиеПриОткрытииПоСсылке) если Событие.Ссылка.Схема == "e1c" и Событие.Ссылка.Путь == "/order" и Событие.Ссылка.Параметры.ПолучитьПервый("action") == "confirm" пер Счет = Событие.Ссылка.Параметры.ПолучитьПервый("orderId") ПоказатьФормуПодтверждения(Счет) ; ;