Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V nejnovější verzi můžou aplikace, které implementují widgety Windows, naplnit obsah widgetu kódem HTML obsluhované ze vzdálené adresy URL. Dříve bylo možné obsah widgetu dodat pouze ve formátu schématu adaptivní karty v JSON payloadu předaném poskytovatelem na nástěnku widgetů. Vzhledem k tomu, že poskytovatelé webových widgetů musí stále poskytovat datovou část JSON adaptivní karty, měli byste postupovat podle pokynů pro implementaci poskytovatele widgetu v implementaci zprostředkovatele widgetu v aplikaci C# pro Windows nebo implementovat poskytovatele widgetu v aplikaci win32 (C++/WinRT).
Zadání adresy URL obsahu
Poskytovatelé widgetů předají datovou část JSON na panel Widgets s voláním widgetManager.UpdateWidget. U webového widgetu místo poskytnutí základního objektu definující obsah widgetu byste měli zadat prázdný základní objekt a místo toho zahrnout objekt metadat s polem webUrl , které odkazuje na adresu URL, která poskytne obsah HTML widgetu.
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.6",
"body": [],
"metadata":
{
"webUrl": "https://www.contoso.com/widgetprovider.html"
}
}
Zpracování požadavků na prostředky
Zprostředkovatelé widgetů mohou zadat řetězec filtru webového požadavku pro widget v atributu WebRequestFilterelementu Definition v souboru manifestu balíčku zprostředkovatele. Kdykoli obsah widgetu vyžaduje prostředek s identifikátorem URI, který odpovídá filtru, požadavek bude zachycen a přesměrován na implementaci IWidgetResourceProvider.OnResourceRequested poskytovatele widgetu.
Vzor filtru se vyjadřuje pomocí formátu popsaného ve vzorech shody. V případě potřeby musí řetězec filtru v registraci používat punycode . Všechny typy obsahu budou přesměrovány, jakmile dojde k shodě, takže filtr by měl směřovat pouze na obsah určený k získání prostřednictvím IWidgetResourceProvider v aplikaci. Další informace o formátu manifestu balíčku zprostředkovatele widgetu naleznete v tématu Formát XML manifestu balíčku zprostředkovatele widgetu.
Aby mohli poskytovatelé widgetů zpracovávat požadavky na prostředky, musí implementovat rozhraní IWidgetResourceProvider .
internal class WidgetProvider : IWidgetProvider, IWidgetResourceProvider
Při implementaci metody OnResourceRequested mohou zprostředkovatelé widgetů poskytnout požadované prostředky nastavením vlastnosti WidgetResourceRequestedArgs.Response na objekt WidgetResourceResponse, který obsahuje požadovaný prostředek. Při asynchronním získání prostředku by měl poskytovatel požádat o odložení voláním WidgetResourceRequestedArgs.GetDeferral a potom dokončit odložení, jakmile je prostředek nastaven.
async void IWidgetResourceProvider.OnResourceRequested(WidgetResourceRequestedArgs args)
{
var deferral = args.GetDeferral();
if (args.Request.Uri.Length > 0)
{
if (args.Request.Uri == "https://contoso.com/logo-image")
{
string fullPath = Windows.ApplicationModel.Package.Current.InstalledPath + "/Assets/image.png";
var file = await StorageFile.GetFileFromPathAsync(fullPath);
var response = new WidgetResourceResponse(RandomAccessStreamReference.CreateFromFile(file), "OK", 200);
response.Headers.Add("Content-Type", "image/png");
args.Response = response;
}
}
deferral.Complete();
}
Pokud poskytovatel nenastaví odpověď na objekt WidgetResourceRequestedArgs, který je předán do metody, systém načte prostředek z webu. V tomto případě může poskytovatel změnit vlastnost Headers objektu WidgetResourceRequestedArgs.Request, například za účelem poskytnutí kontextu uživatele nebo tokenů, a systém použije aktualizované hlavičky při načítání prostředku z webu.
Zpracování zpráv k a z webového obsahu
Chcete-li přijímat řetězcové zprávy z obsahu widgetu, který byl publikován pomocí window.chrome.webview.postMessage JavaScript metoda, zprostředkovatelé widgetu mohou implementovat IWidgetProviderMessage rozhraní a implementovat OnMessageReceived metoda.
internal class WidgetProvider : IWidgetProvider, IWidgetProviderMessage
...
public void OnMessageReceived(WidgetMessageReceivedArgs args)
{
Console.WriteLine($"Message received from widget {args.WidgetContext.Id}: {args.Message}");
}
Poskytovatelé widgetů mohou odeslat zprávu do webového obsahu widgetu voláním WidgetManager.SendMessage. Musíte zadat ID widgetu, do kterého se zpráva odešle, což je hodnota zadaná v atributu IDelementu Definition v souboru manifestu balíčku zprostředkovatele. Další informace naleznete v tématu Formát XML manifestu balíčku zprostředkovatele widgetu. Řetězec zprávy může být jednoduchý text nebo serializovaná forma objektu interpretovaného webovým obsahem. Další informace naleznete v tématu PostWebMessageAsString.
var message = $"{{ \"current_location\": \"{ location }\" }}";
WidgetManager.GetDefault().SendMessageToContent("Weather_Widget", message);
Omezení a požadavky
- Tato funkce je k dispozici pouze uživatelům v Evropském hospodářském prostoru (EHP). V EHP můžou nainstalované aplikace, které implementují poskytovatele informačních kanálů, poskytovat informační kanál na nástěnce widgetů.
Windows developer