Расширения на обработку ссылок tessa://
Расширения на обработку ссылок tessa://¶
Пусть требуется добавить новый тип ссылки, который обрабатывает некоторый заданный Action=MyAction. tessa://tessaclient.tessa?Action=MyAction&Param1=value1
Для этого в клиентских расширениях (проект Tessa.Extensions.Client) пишется статический метод Handler, который принимает параметр ILinkContext и выполняет обработку ссылки, параметры которой указаны в контексте.
public static class MyActionLink
{
public static void Handler(ILinkContext context)
{
// если требуется, то можно активировать главное окно приложения;
// например, если оно было свёрнуто, то оно разворачивается
context.ActivateShell();
// код по обработке ссылки
string param1 = context.Parameters["Param1"]; // "value1"
var uiHost = context.Container.Resolve<IUIHost>();
...
// ставим Handled, если ссылка была успешно обработана;
// например, карточка была открыта, если это ссылка на открытие карточки
context.Handled = true;
}
}
Чтобы задать Action=MyAction, метод-обработчик Handler требуется зарегистрировать следующим образом:
[Registrator]
public sealed class Registrator : RegistratorBase
{
public override void FinalizeRegistration()
{
if (this.UnityContainer.IsRegistered<ILinkManager>())
{
this.UnityContainer
.Resolve<ILinkManager>()
.Register("MyAction", MyActionLink.Handler)
;
}
}
}
Для тестирования обработки ссылок можно использовать параметр /link приложения, в котором указать часть ссылки после знака “?”: Action=MyAction&Param1=value1. При вызове из командной строки требуется заключить параметр в кавычки, чтобы корректно был выполнен escaping служебных символов. Например:
TessaClient.exe "/link:Action=MyAction&Param1=value1"
Приложение TessaClient вместе с обновлёнными расширениями Tessa.Extensions.Client.dll требуется опубликовать на сервере приложений, после чего на компьютерах с установленным Tessa Applications при переходе по ссылке будет автоматически скачано обновление TessaClient, и в приложении будет запущен написанный обработчик MyActionLink.Handler.