Criar aplicativos móveis orientados por pesquisa com as interfaces de Navegação e do REST de log de eventos

O SharePoint apresenta as interfaces REST de Navegação e Registro de Eventos, permitindo que você crie um aplicativo móvel controlado por pesquisa para dispositivos móveis, como telefones e tablets que são executados em sistemas operacionais diferentes do Windows, por exemplo, Android e iOS.

Como os aplicativos funcionam com o catálogo de produtos

Um catálogo de produtos pode ser exibido em um dispositivo móvel de diferentes maneiras. Tradicionalmente, você pode configurar um canal móvel para o catálogo de produtos no SharePoint. A criação de um canal móvel permite que você adapte uma aparência que corresponda a qualquer tamanho de tela em um dispositivo móvel. A página resultante é exibida em . Formato ASPX usando o navegador da Web no dispositivo móvel. A estrutura das páginas e sua lógica correspondente é tratada pelo servidor que executa o SharePoint. Por outro lado, um aplicativo criado com as interfaces REST de Navegação e Registro de Eventos é controlado por pesquisa e atua como um front-end para navegar pelas estruturas do catálogo de produtos.

Um aplicativo não é um programa autônomo, mas funciona com um catálogo de produtos configurado em uma instalação existente do SharePoint. O aplicativo pode atualizar dinamicamente a estrutura de navegação se não tiver alterado o catálogo de produtos nessa instalação específica do SharePoint. Além disso, clique em eventos feitos pelo usuário são enviados de volta ao servidor que executa o SharePoint para melhorar a qualidade geral das recomendações feitas pelo catálogo de produtos.

O aplicativo constrói as páginas necessárias pelo usuário para exibir o catálogo de produtos sem usar um navegador da web. Páginas mestras, layouts de página e lógica para construir as páginas para exibir o catálogo de produtos são baixadas em determinados dispositivos, como um aplicativo; Essas páginas são reutilizadas sempre que o usuário executa o aplicativo. Enquanto o usuário navega até o catálogo de produtos, o aplicativo simultaneamente constrói uma estrutura de navegação e configura as páginas. Para preencher relevantes páginas com conteúdo de item, as consultas de pesquisa são enviadas ao catálogo de produtos do SharePoint. Os resultados de pesquisa correspondente, em seguida, são usados para preencher as páginas.

Exemplo: Criar um aplicativo móvel orientado por pesquisa com home, categoria e item páginas de detalhe

Suponha que você tenha um aplicativo móvel com três tipos de páginas: uma home page, páginas de categoria e páginas de detalhes do item. As seções a seguir descrevem como as interfaces de navegação, log de eventos e REST de pesquisa são usadas para criar as páginas.

Home page de um aplicativo móvel orientado por pesquisa

Geralmente a página inicial é exibida quando o aplicativo é iniciado. Página inicial do contém o menu de catálogo do produto, algum texto e uma imagem estática, conforme mostrado na Figura 1.

Figura 1. Home page de um aplicativo móvel orientado por pesquisa

Diagrama que mostra o Aplicativo Móvel se comunicando com uma chamada HTTP de navegação REST para o Share Point, que fornece uma resposta da estrutura de navegação de volta.

Para construir nesta página, o aplicativo envia uma chamada de navegação restante no servidor que executa o solicitando a estrutura de navegação do catálogo de produtos do SharePoint. Em seguida, o aplicativo usa os dados de resposta para configurar a taxonomia correta ou uma estrutura de menu e exibe os nomes de termo correto para o catálogo de produtos. Conteúdo adicional, como imagens estáticas, texto do título e layout de página são armazenados no próprio aplicativo. Se a taxonomia é modificada mais tarde, o aplicativo pode ser atualizado com o restante de navegação chamada quando ele for executado.

O exemplo a seguir é um exemplo de uma chamada de navegação REST típica.


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

Uma resposta correspondente é mostrada em Resposta de exemplo para uma chamada REST de navegação para um aplicativo móvel.

Página de categoria para um aplicativo móvel orientado por pesquisa

A página de categoria exibe o número de itens em uma categoria selecionada. Cada item listado em uma categoria normalmente pode ser representado pela alguns dados relevantes do item, como título, uma imagem e preço. Esses dados são coletados no catálogo de produtos, usando uma consulta de pesquisa por meio do serviço REST de pesquisa do SharePoint, conforme mostrado na Figura 2.

Figura 2. Página de categoria para um aplicativo móvel orientado por pesquisa

Diagrama que mostra o Aplicativo Móvel se comunicando com uma consulta de pesquisa REST ao Share Point, que fornece os resultados da pesquisa de volta.

Se você escolher uma das categorias no diagrama anterior, por exemplo, TV, uma página de categoria será exibida.

O exemplo a seguir é um exemplo de uma consulta de pesquisa REST típica para obter conteúdo para uma determinada categoria.


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

Uma resposta correspondente é mostrada em Resposta de exemplo para uma consulta REST de pesquisa para um aplicativo móvel.

O componente de processamento de consulta no SharePoint retorna resultados de pesquisa que contêm dados para uma determinada categoria e o aplicativo apresenta os dados na página Categoria . Se houver uma melhor opção associada a categoria selecionada, o componente de processamento de consulta detecta essa associação e extrai os dados de melhor opção de banco de dados o melhor opção, rotulado BB no diagrama. Os resultados da pesquisa são então misturados com resultados do banco de dados de melhor opção e enviados de volta para o aplicativo em uma tabela de resultado. O aplicativo é responsável por extrair as diferentes partes dos resultados da tabela e exibindo a melhor opção em um local dedicado.

Páginas de detalhes do item para um aplicativo móvel orientado por pesquisa

Se você selecionar um item em uma categoria, a página de detalhes do Item aparece. Nessa página, um item é descrito em detalhes com dados, como título, imagens de produtos, descrição técnica, preço e informações de entrega. Mais recomendações ou classificações, se estiver disponível, também são exibidas. Para construir a página de detalhes do Item, o aplicativo envia duas consultas: uma consulta para recuperar dados de item e outra consulta para receber recomendações relacionam ao item, conforme mostrado na Figura 3.

Figura 3. Página de detalhes do item para um aplicativo móvel controlado por pesquisa

Build search driven

O exemplo a seguir é um exemplo de uma consulta de pesquisa REST típica para obter conteúdo para um item específico.


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

As recomendações são calculadas no SharePoint, não no próprio aplicativo. Para criar as recomendações com base nos eventos de usuário — não apenas em todos os eventos de usuário que são coletados pelo catálogo de produtos, mas esse aplicativo específico — o aplicativo constantemente envia os eventos do usuário, à medida que ocorrem, volta para o catálogo de produtos do SharePoint por meio de uma chamada de evento. Esses eventos de usuário são armazenados no log de eventos e processados apenas como outros eventos de usuário associados a esse item específico. Nenhum retorno de chamada é enviado ao aplicativo do catálogo de produtos. As recomendações calculadas estão disponíveis para o aplicativo por meio do serviço REST de Pesquisa do SharePoint.

O exemplo a seguir mostra uma chamada POST típica para registro em log 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"
      }
}

O serviço segue códigos de retorno HTTP padrão: uma resposta HTTP 200 indica uma solicitação bem-sucedida. Não há respostas do catálogo de produtos para a interface REST do Log de Eventos.

Resposta de exemplo para uma chamada REST de navegação para um aplicativo móvel


<?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>

Resposta de exemplo para uma consulta REST de pesquisa para um aplicativo móvel


<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>

Confira também