Поделиться через


Протокол ActivateApplication поставщика мини-приложений

В этой статье описывается формат параметров активации командной строки для поставщиков мини-приложений, использующих тип активации ActivateApplication .

Внимание

Поставщики мини-приложений указывают метод активации в файле манифеста поставщика мини-приложений, как описано в формате XML манифеста пакета поставщика мини-приложений. Рекомендуется использовать тип активации CreateInstance и отвечать на запросы узла мини-приложений с помощью методов интерфейса IWidgetProvider вместо метода активации ActivateApplication . Сведения, приведенные в этой статье, предоставляются для полноты и не рекомендуется использовать для большинства реализаций поставщиков мини-приложений.

Строка аргументов в кодировке ActivateApplication и base64url

При активации поставщика мини-приложений командная строка будет --widget-call= иметь префикс перед кодировкой Base64url в аргументах командной строки.

--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. Например, для WidgetContext widgetContext параметра CreateWidget метода WidgetContext определяется следующим образом:

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

Примечание.

Поставщики мини-приложений должны игнорировать непредвиденные значения параметров для обработки ситуации, когда в будущем добавляются дополнительные параметры.

Вызов API поставщика CreateWidget мини-приложений маршалируется в объект 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 Мини-приложениеSize — это единственное, что триг мини-приложение WidgetContextChanged.

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