Partager via


Protocole ActivateApplication du fournisseur de widgets

Cet article décrit le format des paramètres d’activation de ligne de commande pour les fournisseurs de widgets qui utilisent le type d’activation ActivateApplication.

Important

Les fournisseurs de widgets spécifient une méthode d’activation dans le fichier manifeste du fournisseur de widgets, comme décrit dans le format XML du manifeste du package du fournisseur de widgets. Il est recommandé que les fournisseurs de widgets utilisent le type d’activation CreateInstance et répondent aux demandes d’hôte de widget à l’aide des méthodes d’interface IWidgetProvider au lieu d’utiliser la méthode d’activation ActivateApplication. Les informations contenues dans cet article sont fournies pour l’exhaustivité et ne sont pas recommandées pour une utilisation par la plupart des implémentations du fournisseur de widgets.

Chaîne d’arguments dans l’encodage ActivateApplication et base64url

Lorsque le fournisseur de widgets est activé, la ligne de commande a --widget-call= préfixé avant l’encodage base64url dans les arguments de ligne de commande.

--widget-call=[base64url]

Par exemple, la partie base64url dans

--widget-call=ew0KICAgICJXaWRnZXRDYWxsIjoiQ3JlYXRlV2lkZ2V0IiwNCiAgICAiV2lkZ2V0Q29udGV4dCI6ew0KICAgICAgICAiSWQiOiI5ODU4MjEwOS1jNmJmLTQzNzItODlkNi04OWY1N2ViNzU0ZjYiLA0KICAgICAgICAiRGVmaW5pdGlvbk5hbWUiOiJQV0FfQ291bnRpbmdfV2lkZ2V0IiwNCiAgICAgICAgIlNpemUiOiJMYXJnZSINCiAgICB9DQp9

est décodé dans

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

Détails du format de ligne de commande

La ligne de commande Json encode les appels aux méthodes IWidgetProvider :

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

Chaque activation représente un appel de méthode. L’objet Json a une valeur WidgetCall avec le nom de la méthode, puis une valeur pour chaque paramètre, nommée comme le nom de paramètre sans la majuscule. Chaque paramètre est mappé en tant paire <nom de variable, valeur> à l’objet json. Par exemple, pour le paramètre WidgetContext widgetContext de la méthode CreateWidget, le WidgetContext est défini comme suit :

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

Note

Les fournisseurs de widgets doivent ignorer les valeurs de paramètres inattendues pour gérer le cas où des paramètres supplémentaires sont ajoutés à l’avenir.

L’appel d’API CreateWidget du fournisseur de widgets est marshalé en objet Json :

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

L’objet inclut toujours la valeur WidgetCall et toutes les valeurs de paramètre spécifiées par la méthode IWidgetProvider.

Exemples d’objets marshalés

Créer un objet Json widget

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

Supprimer l’objet Json du widget

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

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

Activer l’objet Json

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

Désactiver l’objet Json

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

Objet Json OnWidgetContextChanged

Par exemple, WidgetSize est remplacé par Medium. Dans SV2, WidgetSize est la seule chose qui déclenche le WidgetContextChanged.

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