Расширения на обработку ссылок 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
.