Protocolo ActivateApplication del proveedor de widgets
En este artículo se describe el formato de los parámetros de activación de la línea de comandos para los proveedores de widgets que usan el tipo de activación ActivateApplication.
Importante
Los proveedores de widgets especifican un método de activación en el archivo de manifiesto del proveedor de widgets tal como se describe en el formato XML del manifiesto del paquete del proveedor de widgets. Se recomienda que los proveedores de widgets usen el tipo de activación CreateInstance y respondan a las solicitudes de host del widget mediante los métodos de interfaz IWidgetProvider en lugar de usar el método de activación ActivateApplication. La información de este artículo se proporciona para la integridad y no se recomienda su uso por parte de la mayoría de las implementaciones del proveedor de widgets.
Cadena de argumentos en la codificación ActivateApplication y base64url
Cuando se activa el proveedor de widgets, la línea de comandos tendrá --widget-call=
prefijo antes de la codificación base64url en los argumentos de la línea de comandos.
--widget-call=[base64url]
Por ejemplo, la parte base64url de
--widget-call=ew0KICAgICJXaWRnZXRDYWxsIjoiQ3JlYXRlV2lkZ2V0IiwNCiAgICAiV2lkZ2V0Q29udGV4dCI6ew0KICAgICAgICAiSWQiOiI5ODU4MjEwOS1jNmJmLTQzNzItODlkNi04OWY1N2ViNzU0ZjYiLA0KICAgICAgICAiRGVmaW5pdGlvbk5hbWUiOiJQV0FfQ291bnRpbmdfV2lkZ2V0IiwNCiAgICAgICAgIlNpemUiOiJMYXJnZSINCiAgICB9DQp9
se descodifica en
{
"WidgetCall":"CreateWidget",
"WidgetContext":{
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Large"
}
}
Detalles del formato de la línea de comandos
La línea de comandos Json codifica las llamadas a los IWidgetProvider
métodos:
interface IWidgetProvider
{
void CreateWidget(WidgetContext widgetContext);
void DeleteWidget(String widgetId);
void OnActionInvoked(WidgetCallInvokedArgs actionInvokedArgs);
void OnWidgetContextChanged(WidgetContextChangedArgs contextChangedArgs);
}
Cada activación representa una llamada de método. El objeto Json tiene un WidgetCall
valor con el nombre del método y, a continuación, un valor para cada parámetro, denominado como nombre de parámetro, excepto en mayúsculas. Cada parámetro se asigna como un nombre de variable de par<, valor> al objeto json. Por ejemplo, para el WidgetContext widgetContext
parámetro del CreateWidget
método, WidgetContext
se define de la siguiente manera:
runtimeclass WidgetContext
{
String Id { get; };
String DefinitionId{ get; };
String Size { get; };
};
Nota:
Los proveedores de widgets deben omitir los valores de parámetro inesperados para controlar el caso en el que se agreguen parámetros adicionales en el futuro.
La llamada API del proveedor CreateWidget
de widgets se serializará en el objeto Json:
{
"WidgetCall":"CreateWidget",
"WidgetContext":{
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Large"
}
}
El objeto siempre incluirá el WidgetCall
valor y todos los valores de parámetro especificados por el IWidgetProvider
método.
Ejemplos de objetos serializado
Creación de un objeto Json widget
{
"WidgetCall":"CreateWidget",
"WidgetContext":{
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Large"
}
}
Eliminar objeto Json de widget
{
"WidgetId": "1AC74363-177B-4CD2-995F-3B25AEEA3FF4",
"WidgetCall": "DeleteWidget",
"CustomState": "usedata"
}
OnActionInvoked Json (objeto)
{
"WidgetCall": "OnActionInvoked",
"Args":{
"Verb": "Verb String",
"Data": "Data Details",
"CustomState": "usedata",
"WidgetContext": {
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Large"
}
}
}
Activar objeto Json
{
"WidgetCall": "Activate",
"WidgetContext": {
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Large"
}
}
Desactivar objeto Json
{
"WidgetCall": "Deactivate",
"WidgetId":"98582109-c6bf-4372-89d6-89f57eb754f6"
}
OnWidgetContextChanged objeto Json
Por ejemplo, WidgetSize se cambia a Medio. En SV2, WidgetSize es lo único que trigiza widgetContextChanged.
{
"WidgetCall": "OnWidgetContextChanged",
"Args":{
"WidgetContext":{
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Medium"
}
}
}