ウィジェット プロバイダーの ActivateApplication プロトコル

この記事では、ActivateApplication アクティブ化の種類を使用するウィジェット プロバイダーのコマンド ライン アクティブ化パラメーターの形式について説明します。

重要

ウィジェット プロバイダーのパッケージ マニフェスト (XML 形式)」で説明されているように、ウィジェット プロバイダーでは、ウィジェット プロバイダー マニフェスト ファイルでアクティブ化メソッドが指定されます。 ウィジェット プロバイダーでは、CreateInstance アクティブ化の種類を使用し、ActivateApplication アクティブ化メソッドではなく、IWidgetProvider インターフェイス メソッドを使用してウィジェット ホスト要求に応答することをお勧めします。 この記事の情報は完全を期すために提供されていますが、ほとんどのウィジェット プロバイダーの実装で使用しないことをお勧めします。

ActivateApplication および base64url エンコードの引数文字列

ウィジェット プロバイダーがアクティブ化されると、コマンド ラインでは、コマンド ライン引数の base64url エンコードの前に、--widget-call= プレフィックスが付けられます。

--widget-call=[base64url]

たとえば、次の base64url の部分の場合:

--widget-call=ew0KICAgICJXaWRnZXRDYWxsIjoiQ3JlYXRlV2lkZ2V0IiwNCiAgICAiV2lkZ2V0Q29udGV4dCI6ew0KICAgICAgICAiSWQiOiI5ODU4MjEwOS1jNmJmLTQzNzItODlkNi04OWY1N2ViNzU0ZjYiLA0KICAgICAgICAiRGVmaW5pdGlvbk5hbWUiOiJQV0FfQ291bnRpbmdfV2lkZ2V0IiwNCiAgICAgICAgIlNpemUiOiJMYXJnZSINCiAgICB9DQp9

以下のようにデコードされます。

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

コマンド ライン形式の詳細

Json コマンド ラインでは、IWidgetProvider メソッドへの呼び出しがエンコードされます。

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

各アクティブ化は、1 つのメソッド呼び出しを表します。 Json オブジェクトには、メソッド名を指定した WidgetCall 値と、パラメーター名の名前が付けられた (ただし、大文字化されていない) 各パラメーターの値があります。 各パラメーターは、<変数名、値> のペアとして json オブジェクトにマップされます。 たとえば、CreateWidget メソッドの WidgetContext widgetContext パラメーターの場合、WidgetContext は次のように定義されます。

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

Note

ウィジェット プロバイダーは、将来さらにパラメーターが追加されるケースを処理するために、予期しないパラメーター値を無視する必要があります。

ウィジェット プロバイダー CreateWidget API 呼び出しは Json オブジェクトにマーシャリングされます。

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

オブジェクトには、IWidgetProvider メソッドで指定された WidgetCall 値とすべてのパラメーター値が常に含まれます。

マーシャリングされたオブジェクトの例

ウィジェットの作成 Json オブジェクト

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

ウィジェットの削除 Json オブジェクト

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

OnActionInvoked Json オブジェクト

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

Activate Json オブジェクト

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

Deactivate Json オブジェクト

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

OnWidgetContextChanged Json オブジェクト

たとえば、WidgetSize が Medium に変更されます。 SV2 では、WidgetContextChanged をトリガーするのは WidgetSize だけです。

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