Compartir a través de


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"
        }
  }
}