Dopo il rilascio di Windows Phone 7, sia gli utenti che gli sviluppatori poi hanno richiesto a gran voce una maggiore integrazione delle applicazioni con il sistema operativo.
In passato, lo sviluppatore poteva integrare la propria applicazione solo con la parte multimediale del sistema operativo; oggi, con l'arrivo di Windows Phone, viene aggiunto un nuovo hub, chiamato Search, attraverso il quale è possibile fare in modo che la nostra applicazione interagisca con i risultati di una ricerca prodotti da Bing.
In modo del tutto analogo agli altri punti di integrazione ed estensioni delle funzioni del sistema operativo, è necessario modificare il file manifiest WMAppManifest.xml:
<Extensions> <Extension ExtensionName="Bing_Products_Video_Games" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}" TaskID="_default" ExtraFile="Extensions\\Extras.xml" /> </Extensions>
Nel frammento di codice precedente possiamo vedere le quattro proprietà che servono per la registrazione. Analizziamole in dettaglio:
- ExtensionName: questa proprietà indica per quale tipo di ricerca registrare la nostra applicazione. nel nostro caso l'applicazione venga sfruttata per le ricerche che riguardano video giochi, è possibile trovare una lista completa al seguente indirizzo: http://msdn.microsoft.com/en-us/library/hh202958(VS.92).aspx
- ConsumerID: rappresenta il codice dell'estensione; nel caso della ricerca l'id è sempre 5B04B775-356B-4AA0-AAF8-6491FFEA5661;
- TaskID: rapprenseta il task; di solito _default;
- ExtraFile: indica il percorso del file Extras, che deve trovarsi sempre nella cartella Extensions e chiamarsi Extras.
- Il file Extras contiene le informazioni riguardanti la nostra applicazione e si presenta in questa forma:
<?xml version="1.0" encoding="utf-8" ?> <ExtrasInfo> <AppTitle> <default>Product Results</default> <it-IT>Risultati</it-IT> </AppTitle> <!-- Search-related captions --> <Consumer ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5661}"> <!-- Computer products caption --> <ExtensionInfo> <Extensions> <ExtensionName>Bing_Products_Video_Games</ExtensionName> </Extensions> <CaptionString> <default>Search games</default> <it-IT>Ricerca video giochi</it-IT> </CaptionString> </ExtensionInfo> </Consumer> </ExtrasInfo>
La proprietà AppTile contiene il nome dell'applicazione e l'eventuale versione localizzata, mentre ConsumerID identifica l'estensione ed ExtensionName il tipo di ricerca inerente la nostra applicazione. Infine, CaptionString contiene l'etichetta da visualizzare e l'eventuale versione localizzata.
Quando la nostra applicazione viene lanciata dalla pagina di ricerca, questo avviene attraverso un URI che ha il seguente formato:
app://<AppID>/_default#/SearchExtras?ProductName=<product_name>&Category=<extension_names>
E' necessario preparare la nostra applicazione a riceve e gestire questo tipo di URI; è possibile farlo utilizzando la classe UriMapper e modificando il file App.xaml, come di seguito:
<nav:UriMapper x:Key="UriMapper"> <nav:UriMapper.UriMappings> <nav:UriMapping Uri="/SearchExtras" MappedUri="/Search.xaml"/> </nav:UriMapper.UriMappings> </nav:UriMapper>
Nel seguente frammento di codice è possibile vedere le impostazioni relative all'UriMapper inserite nella collezione Resorces dell'applicazione.
Per terminate, non ci rimane che gestire i paramenti provenienti in querystring, cosa che possiamo fare dal codice della pagina Search.xaml.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Ottimizzazione dei block template in Angular 17
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Recuperare App Service cancellati su Azure
Configurare lo startup di applicazioni server e client con .NET Aspire
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Ordine e importanza per @layer in CSS
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL