Перейти к основному содержимому

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

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

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

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

@Обработчик
метод ПриОткрытииПоСсылке(Событие: СобытиеПриОткрытииПоСсылке)
// Действия при открытии по ссылке
;

Чтобы указать, какие ссылки должно перехватывать приложение, используйте группу свойств ВнешниеСсылки элемента проекта Мобильный Клиент. Поддерживаются ссылки следующего вида:

  • ссылки, содержащие адрес публикации вашего приложения (свойство Публикация);
  • произвольные внешние ссылки, использующие протокол 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")
    ПоказатьФормуПодтверждения(Счет)
    ;
    ;

См. также