Condividi tramite


Protocollo ActivateApplication per provider di widget

Questo articolo descrive il formato dei parametri di attivazione della riga di comando per i provider di widget che usano il tipo di attivazione ActivateApplication.

Importante

I provider di widget specificano un metodo di attivazione nel file manifesto del provider widget come descritto nel formato XML del manifesto del pacchetto del provider di widget. È consigliabile che i provider di widget usino il tipo di attivazione CreateInstance e rispondano alle richieste host widget usando i metodi di interfaccia IWidgetProvider anziché usare il metodo di attivazione ActivateApplication. Le informazioni contenute in questo articolo sono fornite per completezza e non sono consigliate per l'uso da parte della maggior parte delle implementazioni del provider di widget.

Stringa di argomenti nella codifica ActivateApplication e base64url

Quando il provider di widget viene attivato, la riga di comando avrà --widget-call= preceduto dal prefisso di codifica base64url negli argomenti della riga di comando.

--widget-call=[base64url]

Ad esempio, la parte base64url in

--widget-call=ew0KICAgICJXaWRnZXRDYWxsIjoiQ3JlYXRlV2lkZ2V0IiwNCiAgICAiV2lkZ2V0Q29udGV4dCI6ew0KICAgICAgICAiSWQiOiI5ODU4MjEwOS1jNmJmLTQzNzItODlkNi04OWY1N2ViNzU0ZjYiLA0KICAgICAgICAiRGVmaW5pdGlvbk5hbWUiOiJQV0FfQ291bnRpbmdfV2lkZ2V0IiwNCiAgICAgICAgIlNpemUiOiJMYXJnZSINCiAgICB9DQp9

viene decodificata in

{
    "WidgetCall":"CreateWidget",
    "WidgetContext":{
        "Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
        "DefinitionId":"PWA_Counting_Widget",
        "Size":"Large"
    }
}

Dettagli del formato della riga di comando

La riga di comando JSON codifica le chiamate ai metodi IWidgetProvider:

    interface IWidgetProvider
    {
        void CreateWidget(WidgetContext widgetContext);
        void DeleteWidget(String widgetId);
        void OnActionInvoked(WidgetCallInvokedArgs actionInvokedArgs);
        void OnWidgetContextChanged(WidgetContextChangedArgs contextChangedArgs);
    }

Ogni attivazione rappresenta una chiamata al metodo. L'oggetto JSON ha un valore WidgetCall con il nome del metodo e quindi un valore per ogni parametro, denominato come nome del parametro, ad eccezione delle maiuscole. Ogni parametro viene mappato come coppia<nome della variabile, valore> all'oggetto JSON. Ad esempio, per il parametro WidgetContext widgetContext del metodo CreateWidget, il WidgetContext viene definito come segue:

    runtimeclass WidgetContext
    {
        String Id { get; };
        String DefinitionId{ get; };
        String Size { get; };
    };

Nota

I provider di widget devono ignorare i valori dei parametri imprevisti per gestire il caso in cui in futuro vengono aggiunti parametri aggiuntivi.

Viene eseguito il marshalling della chiamata dell'API CreateWidget del provider di widget all'oggetto Json:

{
    "WidgetCall":"CreateWidget",
    "WidgetContext":{
        "Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
        "DefinitionId":"PWA_Counting_Widget",
        "Size":"Large"
    }
}

L'oggetto includerà sempre il valore WidgetCall e tutti i valori dei parametri specificati dal metodo IWidgetProvider.

Esempi di oggetti a cui è stato eseguito il marshalling

Creare un oggetto JSON widget

{
    "WidgetCall":"CreateWidget",
    "WidgetContext":{
        "Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
        "DefinitionId":"PWA_Counting_Widget",
        "Size":"Large"
    }
}

Eliminare un oggetto JSON widget

{
  "WidgetId": "1AC74363-177B-4CD2-995F-3B25AEEA3FF4",
  "WidgetCall": "DeleteWidget",
  "CustomState": "usedata"
}

Oggetto JSON OnActionInvoked

{
    "WidgetCall": "OnActionInvoked",
    "Args":{
        "Verb": "Verb String",
        "Data": "Data Details",
        "CustomState": "usedata",
        "WidgetContext": {
            "Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
            "DefinitionId":"PWA_Counting_Widget",
            "Size":"Large"
        }
    }
}

Attivare oggetto JSON

{
    "WidgetCall": "Activate",
    "WidgetContext": {
        "Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
        "DefinitionId":"PWA_Counting_Widget",
        "Size":"Large"
    }
}

Disattivare l'oggetto JSON

{
    "WidgetCall": "Deactivate",
    "WidgetId":"98582109-c6bf-4372-89d6-89f57eb754f6"
}

Oggetto JSON OnWidgetContextChanged

Ad esempio, WidgetSize viene modificato in Medium. In SV2, WidgetSize è l'unica cosa attiva WidgetContextChanged.

{
  "WidgetCall": "OnWidgetContextChanged",
  "Args":{
    "WidgetContext":{
            "Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
            "DefinitionId":"PWA_Counting_Widget",
            "Size":"Medium"
        }
  }
}