Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Windows widgeteket implementáló alkalmazások dönthetnek úgy, hogy a widget tartalmát egy távoli URL-címről letöltött HTML-lel töltik fel. Korábban a widget tartalmát csak adaptív kártya sémaformátumban lehetett megadni a szolgáltatótól a Widgets Boardnak átadott JSON hasznos adatban. Mivel a web widget szolgáltatóknak továbbra is rendelkezniük kell egy adaptív kártya JSON payloaddal, kövesse a widget szolgáltató implementálásának lépéseit a Widget szolgáltató implementálása C# Windows-alkalmazás-ban vagy Widget szolgáltató implementálása win32 alkalmazásban (C++/WinRT).
A tartalom URL-címének megadása
A widget-szolgáltatók JSON-hasznos adatokat adnak át a Widget Board számára a WidgetManager.UpdateWidget hívással. Webes widget esetén a widget tartalmát meghatározó törzsobjektum helyett adjon meg egy üres törzsobjektumot, és helyette egy webUrl-mezővel rendelkező metaadat-objektumot adjon meg, amely a widget HTML-tartalmát tartalmazó URL-címre mutat.
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.6",
"body": [],
"metadata":
{
"webUrl": "https://www.contoso.com/widgetprovider.html"
}
}
Erőforrás-kérelmek kezelése
A widget-szolgáltatók a szolgáltató csomagjegyzékfájljának Definíció elemének WebRequestFilter attribútumában megadhatnak egy webes kérés szűrősztringet egy widgethez. Amikor a widget tartalma olyan erőforrást kér URI alapján, amely megfelel a szűrőnek, a kérést elfogják és átirányítják a widget szolgáltatójának IWidgetResourceProvider.OnResourceRequested implementációjára.
A szűrőminta a Match Patterns (Egyeztetési minták) szakaszban leírt formátummal van kifejezve. A regisztráció szűrősztringjének szükség esetén a Punycode-ot kell használnia. A rendszer minden tartalomtípust átirányít, ha egyezést talál, ezért a szűrőnek csak olyan tartalomra kell vonatkoznia, amelyet az alkalmazás IWidgetResourceProvider-én keresztül kívánnak beszerezni. A widget-szolgáltatói csomag jegyzékformátumával kapcsolatos további információkért tekintse meg a widget-szolgáltató csomagjegyzékének XML-formátumát.
Az erőforrás-kérelmek kezeléséhez a vezérlőszolgáltatóknak implementálniuk kell az IWidgetResourceProvider felületet.
internal class WidgetProvider : IWidgetProvider, IWidgetResourceProvider
Az OnResourceRequested metódus implementációjában a widgetszolgáltatók a kért erőforrásokat úgy biztosíthatják, hogy a WidgetResourceRequestedArgs.Response tulajdonságot egy WidgetResourceResponse objektumra állítja, amely tartalmazza a kért erőforrást. Az erőforrás aszinkron beszerzésekor a szolgáltatónak halasztást kell kérnie a WidgetResourceRequestedArgs.GetDeferral meghívásával, majd az erőforrás beállításakor fejezze be a halasztást.
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();
}
Ha a szolgáltató nem állít be választ a metódusnak átadott WidgetResourceRequestedArgs objektumra, a rendszer lekéri az erőforrást a weből. Ebben az esetben a szolgáltató módosíthatja a WidgetResourceRequestedArgs.Request objektum Fejlécek tulajdonságát, például felhasználói környezet vagy jogkivonatok megadását, és a rendszer a frissített fejléceket fogja használni az erőforrás webes lekérésekor.
Webes tartalmakba érkező és onnan érkező üzenetek kezelése
Ha sztringüzeneteket szeretne fogadni a widget tartalmából, amelyet a window.chrome.webview.postMessage JavaScript metódussal tettek közzé, a widget-szolgáltatók implementálhatják az IWidgetProviderMessage felületet, és implementálhatják az OnMessageReceived metódust .
internal class WidgetProvider : IWidgetProvider, IWidgetProviderMessage
...
public void OnMessageReceived(WidgetMessageReceivedArgs args)
{
Console.WriteLine($"Message received from widget {args.WidgetContext.Id}: {args.Message}");
}
A widgetszolgáltatók a WidgetManager.SendMessage meghívásával üzenetet küldhetnek a widget webes tartalmába. Meg kell adnia annak a widgetnek az azonosítóját, amelyre az üzenetet küldi, amely a szolgáltató csomagjegyzékfájljának Definíció elemének Azonosító attribútumában megadott érték. További információ: Widget-szolgáltatói csomagjegyzék XML-formátuma. Az üzenetsztring lehet egyszerű szöveg vagy a webes tartalom által értelmezett objektum szerializált formája. További információ: PostWebMessageAsString.
var message = $"{{ \"current_location\": \"{ location }\" }}";
WidgetManager.GetDefault().SendMessageToContent("Weather_Widget", message);
Korlátozások és követelmények
Important
Ez a funkció csak az Európai Gazdasági Térség (EGT) felhasználói számára érhető el. Az EGT-ben a hírcsatorna-szolgáltatót megvalósító telepített alkalmazások tartalomcsatornát biztosíthatnak a Widgets Boardban.
Windows developer