Обработка глубоких ссылок
Глубокие ссылки — это ссылки, которые направляют пользователей в определенный раздел приложения или на веб-страницу, если приложение не установлено. Механизм глубоких ссылок также может использоваться для обмена данными между приложениями.
У типов, наследуемых от типа КлиентскоеПриложение
, существует специальный переопределяемый обработчик ПриОткрытииПоСсылке, который позволяет обрабатывать глубокие ссылки.
Пример описания в модуле приложения:
@Обработчик
метод ПриОткрытииПоСсылке(Событие: СобытиеПриОткрытииПоСсылке)
// Действия при открытии по ссылке
;
Чтобы указать, какие ссылки должно перехватывать приложение, используйте группу свойств ВнешниеСсылки элемента проекта Мобильный Клиент. Поддерживаются ссылки следующего вида:
- ссылки, содержащие адрес публикации вашего приложения (свойство Публикация);
- произвольные внешние ссылки, использующие протокол 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")
ПоказатьФормуПодтверждения(Счет)
;
;