Widgetleverantörens ActivateApplication-protokoll

I den här artikeln beskrivs formatet för kommandoradens aktiveringsparametrar för widgetsprovidrar som använder aktiveringstypen ActivateApplication .

Important

Widgetproviders anger en aktiveringsmetod i widgetproviderns manifestfil enligt beskrivningen i XML-formatet för Widget-providerpaketets manifest. Vi rekommenderar att widgetprovidrar använder aktiveringstypen CreateInstance och svarar på widgetvärdbegäranden med hjälp av IWidgetProvider-gränssnittsmetoderna i stället för att använda aktiveringsmetoden ActivateApplication . Informationen i den här artikeln tillhandahålls för fullständighet och rekommenderas inte för användning av de flesta widgetproviderimplementeringar.

Argumentsträng i ActivateApplication och base64url-kodning

När widgetprovidern aktiveras kommer kommandoraden att ha --widget-call= som prefix före base64url-kodningen i kommandoradsargumenten.

--widget-call=[base64url]

Till exempel base64url-delen i

--widget-call=ew0KICAgICJXaWRnZXRDYWxsIjoiQ3JlYXRlV2lkZ2V0IiwNCiAgICAiV2lkZ2V0Q29udGV4dCI6ew0KICAgICAgICAiSWQiOiI5ODU4MjEwOS1jNmJmLTQzNzItODlkNi04OWY1N2ViNzU0ZjYiLA0KICAgICAgICAiRGVmaW5pdGlvbk5hbWUiOiJQV0FfQ291bnRpbmdfV2lkZ2V0IiwNCiAgICAgICAgIlNpemUiOiJMYXJnZSINCiAgICB9DQp9

avkodas till

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

Information om kommandoradsformat

Json-kommandoraden kodar anrop till IWidgetProvider metoderna:

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

Varje aktivering representerar ett metodanrop. JSON-objektet har ett värde för WidgetCall som innehåller metodnamnet, och sedan ett värde för varje parameter, namngivet efter parameternamnet men med inledande versal. Varje parameter mappas som ett parvariabelnamn<, värde> till json-objektet. För parametern WidgetContext widgetContextCreateWidget för metoden WidgetContext definieras den till exempel så här:

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

Note

Widgetprovidrar bör ignorera oväntade parametervärden för att hantera fallet där ytterligare parametrar läggs till i framtiden.

API-anropet för widgetprovidern CreateWidget serialiseras till ett JSON-objekt:

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

Objektet kommer alltid att innehålla värdet WidgetCall och alla parametervärden som anges av metoden IWidgetProvider.

Exempel på marshallerade objekt

Skapa Json-objekt för widget

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

Ta bort Json-objekt för widget

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

OnActionInvoked Json-objekt

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

Aktivera Json-objekt

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

Inaktivera Json-objekt

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

JSON-objekt för OnWidgetContextChanged

Till exempel, när WidgetSize ändras till Medium, utlöses en WidgetContextChanged-händelse.

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