위젯 공급자 ActivateApplication 프로토콜
이 문서에서는 ActivateApplication 활성화 형식을 사용하는 위젯 공급자의 명령줄 활성화 매개 변수 형식에 대해 설명합니다.
Important
위젯 공급자는 위젯 공급자 패키지 매니페스트 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);
}
각 활성화는 하나의 메서드 호출을 나타냅니다. Json 개체에는 메서드 이름이 포함된 WidgetCall
값이 있고, 대문자로 표시된 것을 제외하고 매개 변수 이름으로 명명된 각 매개 변수에 대한 값이 있습니다. 각 매개 변수는 <변수 이름, 값> 쌍으로 json 개체에 매핑됩니다. 예를 들어, CreateWidget
메서드의 WidgetContext widgetContext
매개 변수의 경우 WidgetContext
는 다음과 같이 정의됩니다.
runtimeclass WidgetContext
{
String Id { get; };
String DefinitionId{ get; };
String Size { get; };
};
참고 항목
위젯 공급자는 나중에 추가 매개 변수가 추가되는 경우를 처리하기 위해 예기치 못한 매개 변수 값을 무시해야 합니다.
위젯 공급자 CreateWidget
API 호출은 Json 개체로 마샬링됩니다.
{
"WidgetCall":"CreateWidget",
"WidgetContext":{
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Large"
}
}
개체에는 항상 WidgetCall
값과 IWidgetProvider
메서드에 지정된 모든 매개 변수 값이 포함됩니다.
마샬링된 개체 예
위젯 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"
}
}
}
Json 개체 활성화
{
"WidgetCall": "Activate",
"WidgetContext": {
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Large"
}
}
Json 개체 비활성화
{
"WidgetCall": "Deactivate",
"WidgetId":"98582109-c6bf-4372-89d6-89f57eb754f6"
}
OnWidgetContextChanged Json 개체
예를 들어, WidgetSize는 Medium으로 변경됩니다. SV2에서는 WidgetSize가 유일하게 WidgetContextChanged를 트리거합니다.
{
"WidgetCall": "OnWidgetContextChanged",
"Args":{
"WidgetContext":{
"Id":"98582109-c6bf-4372-89d6-89f57eb754f6",
"DefinitionId":"PWA_Counting_Widget",
"Size":"Medium"
}
}
}
Windows developer