Protokol ActivateApplication untuk penyedia widget

Artikel ini menjelaskan format parameter aktivasi baris perintah untuk penyedia widget yang menggunakan jenis aktivasi ActivateApplication .

Important

Penyedia widget menentukan metode aktivasi dalam file manifes penyedia Widget seperti yang dijelaskan dalam format XML manifes paket penyedia Widget. Disarankan agar penyedia widget menggunakan jenis aktivasi CreateInstance dan menanggapi permintaan host widget menggunakan metode antarmuka IWidgetProvider alih-alih menggunakan metode aktivasi ActivateApplication . Informasi dalam artikel ini disediakan untuk kelengkapan dan tidak disarankan untuk digunakan oleh sebagian besar implementasi penyedia widget.

String argumen di ActivateApplication dan pengodean base64url

Ketika penyedia widget diaktifkan, baris perintah akan memiliki --widget-call= awalan sebelum pengodean base64url dalam argumen baris perintah.

--widget-call=[base64url]

Misalnya, bagian base64url dalam

--widget-call=ew0KICAgICJXaWRnZXRDYWxsIjoiQ3JlYXRlV2lkZ2V0IiwNCiAgICAiV2lkZ2V0Q29udGV4dCI6ew0KICAgICAgICAiSWQiOiI5ODU4MjEwOS1jNmJmLTQzNzItODlkNi04OWY1N2ViNzU0ZjYiLA0KICAgICAgICAiRGVmaW5pdGlvbk5hbWUiOiJQV0FfQ291bnRpbmdfV2lkZ2V0IiwNCiAgICAgICAgIlNpemUiOiJMYXJnZSINCiAgICB9DQp9

didekodekan ke dalam

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

Detail format baris perintah

Baris perintah Json mengodekan panggilan ke IWidgetProvider metode:

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

Setiap aktivasi mewakili satu panggilan metode. Objek JSON memiliki nilai WidgetCall yang berisi nama metode, kemudian nilai untuk tiap parameter, yang dinamai menurut nama parameter, tetapi dengan huruf awal kapital. Setiap parameter dipetakan sebagai nama variabel pasangan<, nilai> ke objek json. Misalnya, untuk parameter WidgetContext widgetContext dari metode CreateWidget, nilai WidgetContext didefinisikan seperti ini:

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

Note

Penyedia widget harus mengabaikan nilai parameter yang tidak terduga untuk menangani kasus di mana parameter tambahan ditambahkan di masa mendatang.

Panggilan API penyedia CreateWidget widget dinamai ke objek Json:

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

Objek akan selalu menyertakan WidgetCall nilai dan semua nilai parameter seperti yang ditentukan oleh IWidgetProvider metode .

Contoh objek yang dimarshalkan

Membuat objek Widget Json

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

Hapus objek Widget Json

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

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

Mengaktifkan Objek Json

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

Menonaktifkan Objek Json

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

Objek JSON OnWidgetContextChanged

Misalnya, ketika WidgetSize berubah menjadi Medium, peristiwa WidgetContextChanged dipicu.

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