Intregrazione con le funzioni di ricerca in Windows Phone 7.1

di Marco Leoncini, in Windows Phone 7.1, Windows Phone,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi