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
Assegnare un valore di default a un parametro di una lambda in C#
Creare moduli CSS in React
Utilizzare Model as a Service su Microsoft Azure
Creare alias per tipi generici e tuple in C#
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Gestire domini wildcard in Azure Container Apps
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Eseguire attività con Azure Container Jobs
Potenziare Azure AI Search con la ricerca vettoriale
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Evitare il flickering dei componenti nel prerender di Blazor 8
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8