Dostawca widżetu ActivateApplication protocol

W tym artykule opisano format parametrów aktywacji wiersza polecenia dla dostawców widżetów korzystających z typu aktywacji ActivateApplication .

Ważna

Dostawcy widżetów określają metodę aktywacji w pliku manifestu dostawcy widżetu zgodnie z opisem w formacie XML manifestu dostawcy widżetu. Zaleca się, aby dostawcy widżetów używali typu aktywacji CreateInstance i odpowiadali na żądania hostów widżetów przy użyciu metod interfejsu IWidgetProvider zamiast metody aktywacji ActivateApplication . Informacje zawarte w tym artykule są dostarczane pod kątem kompletności i nie są zalecane do użycia przez większość implementacji dostawcy widżetów.

Ciąg argumentów w funkcji ActivateApplication i kodowanie base64url

Po aktywowaniu dostawcy widżetu wiersz polecenia będzie miał --widget-call= prefiks przed kodowaniem base64url w argumentach wiersza polecenia.

--widget-call=[base64url]

Na przykład segment base64url w

--widget-call=ewogICAgIldpZGdldENhbGwiOiJDcmVhdGVXaWRnZXQiLAogICAgIldpZGdldENvbnRleHQiOnsKICAgICAgICAiSWQiOiI5ODU4MjEwOS1jNmJmLTQzNzItODlkNi04OWY1N2ViNzU0ZjYiLAogICAgICAgICJEZWZpbml0aW9uSWQiOiJQV0FfQ291bnRpbmdfV2lkZ2V0IiwKICAgICAgICAiU2l6ZSI6IkxhcmdlIgogICAgfQp9

jest dekodowany na

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

Szczegóły formatu wiersza polecenia

Wiersz polecenia JSON reprezentuje wywołania odpowiadające metodom IWidgetProvider . Poniższy pseudokod podsumowuje te metody; nie jest to deklaracja interfejsu, którą można skompilować.

    interface IWidgetProvider
    {
        void CreateWidget(WidgetContext widgetContext);
        void DeleteWidget(String widgetId, String customState);
        void OnActionInvoked(WidgetActionInvokedArgs actionInvokedArgs);
        void OnWidgetContextChanged(WidgetContextChangedArgs contextChangedArgs);
        void Activate(WidgetContext widgetContext);
        void Deactivate(String widgetId);
    }

Każda aktywacja reprezentuje jedno wywołanie metody. Obiekt JSON zawiera wartość WidgetCall z nazwą metody i właściwościami zawierającymi dane wywołania. W poniższych przykładach przedstawiono nazwy właściwości transportu, w tym Args dla obiektów argumentów wywołania zwrotnego.

W przypadku pliku WidgetContext, plik JSON zawiera Id, DefinitionId i Size. Id identyfikuje wystąpienie widżetu i DefinitionId identyfikuje jego definicję manifestu. JSON reprezentuje Size jako ciąg, taki jak "Large"; rzeczywista właściwość interfejsu API WidgetContext.Size to wyliczenie WidgetSize, a nie ciąg.

Note

Dostawcy widżetów powinni ignorować nieoczekiwane wartości parametrów, aby obsłużyć przypadek dodawania dodatkowych parametrów w przyszłości.

Wywołanie interfejsu API dostawcy widżetu CreateWidget jest serializowane do obiektu JSON:

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

Użyj formatu transportu JSON pokazanego tutaj podczas obsługi argumentów ActivateApplication , zamiast traktować kod JSON jako deklarację interfejsu WinRT.

Przykłady zorganizowanych obiektów

Utwórz obiekt JSON widżetu

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

Usuń obiekt JSON widżetu

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

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

Aktywowanie obiektu Json

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

Dezaktywowanie obiektu Json

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

Obiekt JSON OnWidgetContextChanged

Na przykład gdy WidgetSize zmieni się na Medium, zostanie wyzwolone zdarzenie WidgetContextChanged.

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