Обработка глубоких ссылок

Глубокие ссылки — это ссылки, которые направляют пользователей в определенный раздел приложения или на веб-страницу, если приложение не установлено. Механизм глубоких ссылок также может использоваться для обмена данными между приложениями.

У типов, наследуемых от типа КлиентскоеПриложение, существует специальный переопределяемый обработчик ПриОткрытииПоСсылке, который позволяет обрабатывать глубокие ссылки.

Пример описания в модуле приложения:

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

В данном сценарии:
  1. Пользователь переходит по ссылке https://my-pizza.ru?promo=promo123&userId=12345.
  2. Если на устройстве пользователя установлен мобильный клиент, зарегистрированный для обработки ссылок вида https://my-pizza.ru, то происходит его запуск.
    ВидЭлемента: МобильныйКлиент
    Ид: e653eb34-3bff-4d0e-b4e7-7764adf1ee39
    Имя: ПриложениеПользователя
    ОбластьВидимости: ВПодсистеме
    КлиентскоеПриложение: Приложение
    Заголовки:
        Общий: ПриложениеПользователя
    Ресурсы: ПодсистемаОсновное::РесурсыДляСборки
    ВнешниеСсылки:
        Универсальные:
            -
                Схема: https
                Хост: my-pizza.ru
  3. В модуле объекта КлиентскоеПриложение вызывается обработчик ПриОткрытииПоСсылке, который анализирует переданную ссылку и активирует нужный промокод.
    @Обработчик
    метод ПриОткрытииПоСсылке(Событие: СобытиеПриОткрытииПоСсылке)
        пер Ссылка = Событие.Ссылка
        пер Параметры = Ссылка.Параметры
    
        если Параметры != Неопределено и Параметры.Содержит("promo")
            Событие.СтандартнаяОбработка = Ложь
            ПрименитьПромокод(Параметры.ПолучитьПервый("promo"))
        ;
    ;

Пример 2. Передача данных между приложениями

Менеджер склада хочет оплатить счет, однако для оплаты необходимо получить подтверждения старшего менеджера.

В данном сценарии:
  1. Менеджер склада выставляет счет.
  2. В приложении менеджера создается ссылка e1c://order?action=confirm&orderId=12345, которая отправляется старшему менеджеру.
  3. Старший менеджер отрывает ссылку на своем устройстве.
  4. Если на этом устройстве установлен мобильный клиент, зарегистрированный для обработки схемы e1c://, то происходит его запуск.
    ВидЭлемента: МобильныйКлиент
    Ид: e653eb34-3bff-4d0e-b4e7-7764adf1ee39
    Имя: ПриложениеМенеджера
    ОбластьВидимости: ВПодсистеме
    КлиентскоеПриложение: Приложение
    Заголовки:
        Общий: ПриложениеМенеджера
    Ресурсы: ПодсистемаОсновное::РесурсыДляСборки
    ВнешниеСсылки:
        Протоколы:
            -
                Схема: e1c
                Хост: order
  5. В модуле объекта КлиентскоеПриложение вызывается обработчик ПриОткрытииПоСсылке, который анализирует переданную ссылку и открывает форму подтверждения оплаты.
    @Обработчик
    метод ПриОткрытииПоСсылке(Событие: СобытиеПриОткрытииПоСсылке)
        если Событие.Ссылка.Схема == "e1c" и Событие.Ссылка.Путь == "/order" и 
            Событие.Ссылка.Параметры.ПолучитьПервый("action") == "confirm"
            пер Счет = Событие.Ссылка.Параметры.ПолучитьПервый("orderId")
            ПоказатьФормуПодтверждения(Счет)
        ;
    ;