Crear aplicaciones móviles impulsadas por búsquedas con las interfaces REST de navegación y registro de eventos

SharePoint presenta las interfaces REST navegación y registro de eventos, lo que le permite crear una aplicación móvil controlada por búsqueda para dispositivos móviles como teléfonos y tabletas que se ejecutan en sistemas operativos distintos de Windows, por ejemplo, Android e iOS.

Cómo funcionan las aplicaciones con el catálogo de productos

Un catálogo de productos se puede mostrar en un dispositivo móvil de diferentes formas. Tradicionalmente, puede configurar un canal móvil para el catálogo de productos dentro de SharePoint. La creación de un canal móvil permite adaptar un aspecto que coincida con cualquier tamaño de pantalla en un dispositivo móvil. La página resultante se ve en formato .ASPX mediante el navegador web del dispositivo móvil. La estructura de las páginas y su correspondiente lógica se controla con servidor que ejecuta SharePoint. Por el contrario, una aplicación creada con las interfaces REST de navegación y registro de sucesos se basada en la búsqueda y actúa como un front-end para navegar por las estructuras del catálogo de productos.

Una aplicación no es un programa independiente, pero funciona con un catálogo de productos configurado en una instalación existente de SharePoint. La aplicación puede actualizar dinámicamente la estructura de navegación si el catálogo de productos ha cambiado en esa instalación concreta de SharePoint. Además, los eventos de clics realizados por el usuario se envían al servidor que ejecuta SharePoint para mejorar la calidad general de las recomendaciones formuladas por el catálogo de productos.

La aplicación construye las páginas necesarias para que el usuario vea el catálogo de productos sin usar un explorador web. Las páginas maestras, los diseños de página y la lógica para construir las páginas para ver el catálogo de productos se descargan en los dispositivos como una aplicación; estas páginas se reutilizan cada vez que el usuario ejecuta la aplicación. Mientras el usuario navega por el catálogo de productos, la aplicación construye simultáneamente una estructura de navegación y configura las páginas. Para rellenar las páginas pertinentes con contenido de elemento, las consultas de búsqueda se envían al catálogo de productos de SharePoint. A continuación, se usan los resultados de búsqueda correspondientes para rellenar las páginas.

Ejemplo: creación de una aplicación móvil basada en la búsqueda con página de inicio, categoría y páginas de detalle del elemento

Suponga que tiene una aplicación móvil con tres tipos de páginas: una página de inicio, páginas de categoría y páginas de detalles del elemento. En las siguientes secciones se describe cómo se usan las interfaces REST de navegación, registro de eventos y búsqueda para crear las páginas.

Página de inicio para una aplicación móvil basada en la búsqueda

Normalmente, cuando se inicia la aplicación se muestra la página Inicio. La página Inicio contiene el menú del catálogo de productos, un texto y una imagen estática, tal como se muestra en la figura 1.

Figura 1. Página de inicio para una aplicación móvil basada en la búsqueda

Diagrama que muestra la aplicación móvil que se comunica con una llamada HTTP de navegación REST a Share Point, lo que devuelve una respuesta de la estructura de navegación.

Para construir esta página, la aplicación envía una llamada REST de navegación al servidor que ejecuta SharePoint solicitando la estructura de navegación del catálogo de productos. A continuación, la aplicación usa los datos de la respuesta para establecer la taxonomía o la estructura de menú correctas y muestra los nombres de términos correctos para el catálogo de productos. El contenido adicional como el diseño de página, el texto de título y las imágenes estáticas se almacenan en la propia aplicación. Si se modifica la taxonomía más tarde, la aplicación puede actualizarse con la llamada REST de navegación cuando se ejecuta.

A continuación se muestra un ejemplo típico de llamada REST de navegación.


GET http://server/_api/navigation/menustate?mapprovidername='GlobalNavigationSwitchableProvider'

Una respuesta coincidente se muestra en Respuesta de ejemplo para una llamada REST de navegación para una aplicación móvil.

Página de categoría para una aplicación móvil basada en la búsqueda

La página Categoría muestra muchos elementos de una categoría seleccionada. Normalmente, cada elemento incluido en una categoría puede representarse por algunos datos de elementos correspondientes, como el título, una imagen y el precio. Estos datos se recopilan en el catálogo de productos mediante una consulta de búsqueda con el servicio REST de búsqueda de SharePoint como se muestra en la figura 2.

Figura 2. Página de categoría para una aplicación móvil basada en la búsqueda

Diagrama que muestra la aplicación móvil que se comunica con una consulta de búsqueda REST a Share Point, lo que devuelve los resultados de la búsqueda.

Si elige una de las categorías en el diagrama anterior, por ejemplo, TV, aparece una página Categoría.

A continuación se muestra un ejemplo de una típica consulta REST de búsqueda para obtener el contenido de una categoría determinada.


GET http://server/_api/search/query?querytext='owstaxidProductCatalogItemCategory:#0<TermGuid>'

Una respuesta coincidente se muestra en Respuesta de ejemplo para una consulta REST de búsqueda para una aplicación móvil.

El componente de procesamiento de consultas en SharePoint devuelve resultados de búsqueda que contienen datos para una categoría determinada y la aplicación presenta los datos en la página Categoría . Si hay una opción más probable asociada con la categoría seleccionada, el componente de procesamiento de la consulta detecta esta asociación y extrae los datos de la opción más probable de la base de datos de opciones más probables, etiquetada como BB en el diagrama. A continuación, los resultados de la búsqueda se mezclan con los resultados de la base de datos de opciones más probables y se devuelven a la aplicación en una tabla de resultados. La aplicación es responsable de la extracción de las diferentes partes de los resultados de la tabla y de mostrar la opción más probable en un lugar dedicado.

Página de detalles del elemento para una aplicación móvil basada en la búsqueda

Si selecciona un elemento en una categoría, aparece la página Detalles del elemento. En esta página, un elemento se describe en detalle con datos como el título, las imágenes del producto, la descripción técnica, los precios y la información de entrega. También se muestran más recomendaciones o clasificaciones, si están disponibles. Para construir la página Detalles del elemento, la aplicación envía dos consultas: una consulta para recuperar datos del elemento y otra consulta para recibir recomendaciones relacionadas con ese elemento, como se muestra en la figura 3.

Figura 3. Página de detalles del elemento para una aplicación móvil basada en la búsqueda

Crear aplicaciones móviles basadas en búsquedas

A continuación se muestra un ejemplo de una típica consulta REST de búsqueda para obtener el contenido de un elemento determinado.


GET http://server/_api/search/query?querytext='ProductCatalogItemNumberOWSTEXT:1234567'

Las recomendaciones se calculan en SharePoint, no en la propia aplicación. Para crear recomendaciones basadas en eventos de usuario, no solo en esta aplicación en concreto sino en todos los eventos de usuario que se recopilan en el catálogo de productos, la aplicación envía constantemente eventos de usuario, según se producen y vuelven al catálogo de productos de SharePoint a través de una llamada de evento. Estos eventos se almacenan en el registro de eventos y solo se procesan como otros eventos de usuario asociados con ese elemento concreto. Desde el catálogo de productos no se envía ninguna devolución de llamada a la aplicación. Las recomendaciones calculadas están disponibles para la aplicación a través del servicio REST de búsqueda de SharePoint.

El ejemplo siguiente muestra una respuesta típica de una llamada POST al registro de eventos.

POST http://server/_api/events/logevent
{
      "usageEntry": {
            "__metadata": {
                  "type": "Microsoft.SharePoint.Administration.UsageEntry"
            },
            "EventTypeId": 1,
            "ItemId": "an item fb7c-4196-8123-e54eee5f4787",
            "ScopeId": "61141c0e-fb7c ",
            "Site": "61141c0e- 
-4196-8123-e54eee5f4787",
            "User": "johndoe"
      }
}

El servicio sigue los códigos de retorno estándar de HTTP: una respuesta HTTP 200 indica una solicitud correcta. No hay respuestas desde el catálogo de productos para la interfaz REST de registro de eventos.

Respuesta de ejemplo de una llamada REST de navegación para una aplicación móvil


<?xml version="1.0" encoding="utf-8"?>
<d:MenuState xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="SP.MenuState">

  <d:FriendlyUrlPrefix>/sites/contoso/</d:FriendlyUrlPrefix>
  <d:Nodes>
    <d:element m:type="SP.MenuNode">
      <d:CustomProperties m:null="true" />
      <d:FriendlyUrlSegment>electronics</d:FriendlyUrlSegment>
      <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
      <d:Key>16c4c3c8-0309-47f7-9d9b-17e699febce8</d:Key>
      <d:Nodes>
        <d:element m:type="SP.MenuNode">
          <d:CustomProperties m:null="true" />
          <d:FriendlyUrlSegment>audio</d:FriendlyUrlSegment>
          <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
          <d:Key>3e2d5c67-3fad-4cfa-8e1c-8c74fdf3a34b</d:Key>
          <d:Nodes>
            <d:element m:type="SP.MenuNode">
              <d:CustomProperties m:null="true" />
              <d:FriendlyUrlSegment>car-audio</d:FriendlyUrlSegment>
              <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
              <d:Key>e3d271a4-dcbf-464d-a557-23848ccaa54f</d:Key>
              <d:Nodes />
              <d:NodeType m:type="Edm.Int32">1</d:NodeType>
              <d:SimpleUrl></d:SimpleUrl>
              <d:Title>Car audio</d:Title>
            </d:element>
            <d:element m:type="SP.MenuNode">
              <d:CustomProperties m:null="true" />
              <d:FriendlyUrlSegment>headphones</d:FriendlyUrlSegment>
              <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
              <d:Key>7ad146d0-61b5-4b55-9da0-db7eaaa20f4a</d:Key>
              <d:Nodes />
              <d:NodeType m:type="Edm.Int32">1</d:NodeType>
              <d:SimpleUrl></d:SimpleUrl>
              <d:Title>Headphones</d:Title>
            </d:element>
            <d:element m:type="SP.MenuNode">
              <d:CustomProperties m:null="true" />
              <d:FriendlyUrlSegment>mp3</d:FriendlyUrlSegment>
              <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
              <d:Key>7387fe97-52fa-464b-878a-b05d04e7032e</d:Key>
              <d:Nodes />
              <d:NodeType m:type="Edm.Int32">1</d:NodeType>
              <d:SimpleUrl></d:SimpleUrl>
              <d:Title>MP3</d:Title>
            </d:element>
            <d:element m:type="SP.MenuNode">
              <d:CustomProperties m:null="true" />
              <d:FriendlyUrlSegment>speakers</d:FriendlyUrlSegment>
              <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
              <d:Key>65da907c-9565-45f6-a278-cbce7f74ab3d</d:Key>
              <d:Nodes />
              <d:NodeType m:type="Edm.Int32">1</d:NodeType>
              <d:SimpleUrl></d:SimpleUrl>
              <d:Title>Speakers</d:Title>
            </d:element>
          </d:Nodes>
          <d:NodeType m:type="Edm.Int32">1</d:NodeType>
          <d:SimpleUrl></d:SimpleUrl>
          <d:Title>Audio</d:Title>
        </d:element>
      </d:Nodes>
      <d:NodeType m:type="Edm.Int32">1</d:NodeType>
      <d:SimpleUrl></d:SimpleUrl>
      <d:Title>Electronics</d:Title>
    </d:element>
  </d:Nodes>
  <d:SimpleUrl m:null="true" />
  <d:SPSitePrefix>/sites/contoso/</d:SPSitePrefix>
  <d:SPWebPrefix>/sites/contoso/</d:SPWebPrefix>
  <d:StartingNodeKey>2168423f-3fea-4324-a5cb-90be8f079750</d:StartingNodeKey>
  <d:StartingNodeTitle>contoso</d:StartingNodeTitle>
  <d:Version>2012-05-29T12:00:04.4747484Z</d:Version>
</d:MenuState>

Respuesta de ejemplo de una llamada REST de búsqueda para una aplicación móvil


<d:query xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Microsoft.Office.Server.Search.REST.SearchResult">
  <d:ElapsedTime m:type="Edm.Int32">4640</d:ElapsedTime>
  <d:PrimaryQueryResult m:type="Microsoft.Office.Server.Search.REST.QueryResult">
    <d:CustomResults m:null="true"/>
    <d:QueryId>7fea4ced-5789-4067-beab-8f807410b29e</d:QueryId>
    <d:QueryRuleId m:type="Edm.Guid">00000000-0000-0000-0000-000000000000</d:QueryRuleId>
    <d:RefinementResults m:null="true"/>
    <d:RelevantResults m:type="Microsoft.Office.Server.Search.REST.RelevantResults">
      <d:GroupTemplateId m:null="true"/>
      <d:ItemTemplateId m:null="true"/>
      <d:Properties>
        ...
      </d:Properties>
      <d:ResultTitle m:null="true"/>
      <d:ResultTitleUrl m:null="true"/>
      <d:RowCount m:type="Edm.Int32">10</d:RowCount>
      <d:Table m:type="SP.SimpleDataTable">
        <d:Rows>
          ...
        </d:Rows>
      </d:Table>
      <d:TotalRows m:type="Edm.Int32">2048964</d:TotalRows>
      <d:TotalRowsIncludingDuplicates m:type="Edm.Int32">2048964</d:TotalRowsIncludingDuplicates>
    </d:RelevantResults>
    <d:SpecialTermResults m:null="true"/>
  </d:PrimaryQueryResult>
  <d:Properties>
    ...
  </d:Properties>
  <d:SecondaryQueryResults m:null="true"/>
  <d:SpellingSuggestion/>
  <d:TriggeredRules>
  </d:TriggeredRules>
</d:query>

Consulte también