SDK Engage outras indústrias: instruções técnicas de integração de terceiros

Aumente o engajamento com o app alcançando os usuários onde eles estão. Integre o SDK Engage para oferecer recomendações personalizadas e conteúdo de continuação diretamente aos usuários em várias plataformas no dispositivo, como Coleções, Entertainment Space e a Play Store. A integração adiciona menos de 50 KB (compactados) ao APK médio e leva cerca de uma semana de tempo do desenvolvedor para a maioria dos apps. Saiba mais no nosso site para empresas.

Este documento contém instruções para que os parceiros de desenvolvimento integrem novos conteúdos, como reservas, eventos, hospedagem, lugares de interesse, pessoas e outros conteúdos que não se encaixam em nenhuma dessas categorias.

Detalhe de integração

Terminologia

Essa integração inclui os três tipos de cluster a seguir: recomendação, destaque e continuação.

  • Os clusters de recomendação mostram sugestões personalizadas de um parceiro de desenvolvimento. É uma visualização de interface que contém um grupo de recomendações do mesmo parceiro de desenvolvimento.

    • ArticleEntity: ArticleEntity que representa uma recomendação baseada em texto para conteúdo relevante para mais de uma categoria. O item ArticleEntity permite que os desenvolvedores ofereçam uma variedade de conteúdo de texto e imagem com mais metadados para articular as informações aos usuários em comparação com GenericFeaturedEntity. Ex: conteúdo de marketing, snippet de notícias

      Figura 1:IU mostrando uma única ArticleEntity dentro do cluster de recomendações.
    • EventEntity: representa um evento que vai acontecer no futuro. O horário de início do evento é uma informação essencial que precisa ser transmitida aos usuários.

      Figura 2:interface mostrando uma única EventEntity dentro do cluster de recomendações.
    • LodgingEntity: representa uma acomodação, como um hotel, apartamento ou casa de férias para aluguel de curto e longo prazo.

      Figura 3:interface mostrando uma única LodgingEntity no cluster de recomendações.
    • StoreEntity: representa uma loja, restaurante, café etc. Ele destaca o conteúdo em que um local para refeições ou uma loja é a informação essencial que precisa ser transmitida aos usuários.

      Figura 4:interface mostrando uma única StoreEntity dentro do cluster de recomendações.
    • PointOfInterestEntity: representa um lugar de interesse, como um posto de gasolina, um local de eventos, um parque temático, um museu, uma atração turística, uma trilha para caminhadas etc. Ele destaca o conteúdo em que o local é uma informação essencial que precisa ser transmitida aos usuários. Ele não pode ser usado para hospedagem, uma loja ou um restaurante.

      Figura 5:interface mostrando uma única PointOfInterestEntity no cluster de recomendações.
    • PersonEntity: representa uma pessoa. As recomendações podem destacar uma pessoa em categorias como saúde e fitness, esportes, encontros etc.

      Figura 5:interface mostrando uma única PersonEntity no cluster de recomendações.
  • O cluster de continuação mostra conteúdo com que os usuários interagiram recentemente de vários parceiros de desenvolvedores em um único grupo de interfaces. Cada parceiro de desenvolvimento pode transmitir no máximo 10 entidades no cluster de continuação.

    Seu conteúdo de continuação pode ter a seguinte estrutura:

    • ArticleEntity: ArticleEntity que representa uma recomendação baseada em texto para conteúdo relevante para mais de uma categoria. Essa entidade pode ser usada para representar artigos de notícias inconclusos ou outro conteúdo que o usuário gostaria de continuar consumindo de onde parou. Ex: conteúdo de marketing, snippet de notícias

      Figura 6. IU mostrando uma única ArticleEntity em um cluster de continuação.
    • RestaurantReservationEntity: representa uma reserva para um restaurante ou café e ajuda os usuários a acompanhar as reservas de restaurante futuras ou em andamento.

      Figura 7. IU mostrando uma única RestaurantReservationEntity em um cluster de continuação.
    • EventReservationEntity: representa uma reserva para um evento e ajuda os usuários a acompanhar as reservas de eventos futuros ou em andamento. Os eventos podem incluir, entre outros, o seguinte:

      • Eventos esportivos, como reserva para uma partida de futebol
      • Eventos de jogos, como reservas para eSports
      • Eventos de entretenimento, como reserva de filmes em um cinema, shows, teatro e sessões de autógrafos
      • Reservas de viagens ou pontos de interesse, como tours guiados e ingressos para museus
      • Reservas sociais / de seminários / de conferências
      • Reservas de sessões de educação / treinamento
      Figura 8. Interface mostrando uma única EventReservationEntity em um cluster de continuação.
    • LodgingReservationEntity: LodgingEntityReservation representa uma reserva de hospedagem para viagens e ajuda os usuários a acompanhar reservas futuras ou em andamento de hotéis ou aluguéis por temporada.

      Figura 9. Interface mostrando uma única LodgingReservationEntity em um cluster de continuação.
    • TransportationReservationEntity: representa uma reserva de transporte por qualquer meio e ajuda os usuários a acompanhar reservas de voos, balsas, trens, ônibus, serviços de transporte por aplicativo ou cruzeiros futuros ou em andamento.

      Figura 10. Interface mostrando uma única TransportationReservationEntity em um cluster de continuação.
    • VehicleRentalReservationEntity: representa uma reserva de aluguel de veículo e ajuda os usuários a acompanhar as reservas de aluguel de veículo futuras ou em andamento.

      Figura 11. Interface mostrando uma única VehicleRentalReservationEntity em um cluster de continuação.
  • O cluster Em destaque é uma visualização da interface que mostra o herói GenericFeaturedEntity escolhido de vários parceiros de desenvolvimento em um grupo de interfaces. Há um único cluster de destaque, mostrado perto da parte de cima da interface, com um posicionamento prioritário acima de todos os clusters de recomendação. Cada parceiro de desenvolvimento pode transmitir uma única entidade de um tipo aceito em "Destaque", com muitas entidades (possivelmente de tipos diferentes) de vários desenvolvedores de apps no cluster.

    • GenericFeaturedEntity: difere do item de recomendação porque o item em destaque deve ser usado para um único conteúdo principal de desenvolvedores e representar o conteúdo mais importante que será interessante e relevante para os usuários.

      Figura 12:IU mostrando um único herói cartão GenericFeaturedEntity dentro de um cluster em destaque

Pré-trabalho

Nível mínimo da API: 19

Adicione a biblioteca com.google.android.engage:engage-core ao app:

dependencies {
    // Make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.engage:engage-core:1.5.2'
}

Resumo

O design é baseado na implementação de um serviço vinculado.

Os dados que um cliente pode publicar estão sujeitos aos seguintes limites para diferentes tipos de clusters:

Tipo de cluster Limites de cluster Limites mínimos de entidades em um cluster Limites máximos de entidades em um cluster
Clusters de recomendação No máximo 7 Pelo menos 1 No máximo 50 (ArticleEntity, EventEntity, LodgingEntity, StoreEntity, PointOfInterestEntity ou PersonEntity)
Cluster de continuação No máximo 1 Pelo menos 1 No máximo 20 (ArticleEntity, EventReservationEntity, LodgingReservationEntity, TransportationReservationEntity ou VehicleRentalReservationEntity)
Cluster de destaque No máximo 1 Pelo menos 1 No máximo 20 (GenericFeaturedEntity)

Etapa 1: fornecer dados da entidade

O SDK definiu entidades diferentes para representar cada tipo de item. Oferecemos suporte às seguintes entidades na categoria "Outros":

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. EventEntity
  4. LodgingEntity
  5. StoreEntity
  6. PointOfInterestEntity
  7. PersonEntity
  8. RestaurantReservationEntity
  9. EventReservationEntity
  10. LodgingReservationEntity
  11. TransportationReservationEntity
  12. VehicleRentalReservationEntity

As tabelas abaixo descrevem os atributos e os requisitos disponíveis para cada tipo.

GenericFeaturedEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Poster images Obrigatório

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Observação:se um selo for fornecido, garanta um espaço seguro de 24 dps na parte de cima e de baixo da imagem.

Consulte as orientações em Especificações de imagem.
Título Opcional Título da entidade.

Texto livre

Tamanho de texto recomendado: 50 caracteres

Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

Selos Opcional

Cada selo é um texto livre (máximo de 15 caracteres) ou uma imagem pequena.

Tratamento especial de UX sobre a imagem/vídeo, por exemplo, como uma sobreposição de selo na imagem

  • "Atualização em tempo real"
  • Duração da leitura do artigo
Selo: texto Opcional

Título do selo

Observação:o selo precisa ter texto ou imagem.

Texto livre

Tamanho de texto recomendado: até 15 caracteres

Selo - imagem Opcional

Imagem pequena

Tratamento especial de UX, por exemplo, como uma sobreposição de selo na miniatura da imagem/vídeo.

Observação:o selo precisa ter texto ou imagem.

Consulte as orientações em Especificações de imagem.
Categorias de conteúdo Opcional Descreva a categoria do conteúdo na entidade.

Lista de tipos enumerados

Consulte a seção "Categoria de conteúdo" para orientações.

ArticleEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

Texto livre

Tamanho de texto recomendado: no máximo 50 caracteres

Poster images Opcional

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Observação:é altamente recomendável usar uma imagem. Se um selo for fornecido, garanta um espaço seguro de 24 dps na parte superior e inferior da imagem.

Consulte as orientações em Especificações de imagem.
Origem - Título Opcional O nome do autor, da organização ou do jornalista

Texto livre

Tamanho de texto recomendado: menos de 25 caracteres

Origem: imagem Opcional Uma imagem da fonte, como o autor, a organização ou o repórter Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

Selos Opcional

Cada selo é um texto livre (máximo de 15 caracteres) ou uma imagem pequena.

Tratamento especial de UX na parte de cima da imagem/vídeo, por exemplo, como uma sobreposição de selo na imagem

  • "Atualização em tempo real"
  • Duração da leitura do artigo
Selo: texto Opcional

Título do selo

Observação:o selo precisa ter texto ou imagem.

Texto livre

Tamanho de texto recomendado: até 15 caracteres

Selo - imagem Opcional

Imagem pequena

Tratamento especial de UX, por exemplo, como uma sobreposição de selo na miniatura da imagem/vídeo.

Observação:o selo precisa ter texto ou imagem.

Consulte as orientações em Especificações de imagem.
Horário de publicação do conteúdo Opcional É o carimbo de data/hora da época em milissegundos de quando o conteúdo foi publicado/atualizado no app. Carimbo de data/hora da época em milissegundos
Last Engagement Time Obrigatório sob certas condições

O carimbo de data/hora da época em milissegundos em que o usuário interagiu com essa entidade pela última vez.

Observação:esse campo é obrigatório se a entidade fizer parte do cluster de continuação.

Carimbo de data/hora da época em milissegundos
Porcentagem de progresso Obrigatório sob certas condições

A porcentagem do conteúdo completo consumido pelo usuário até o momento.

Observação:esse campo é obrigatório se a entidade fizer parte do cluster de continuação.

Um valor inteiro entre 0 e 100, inclusive.
Categorias de conteúdo Opcional Descreva a categoria do conteúdo na entidade.

Lista de tipos enumerados

Consulte a seção "Categoria de conteúdo" para orientações.

EventEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

String

Tamanho de texto recomendado: no máximo 50 caracteres

Horário de início Obrigatório

O carimbo de data/hora da época em que o evento deve começar.

Observação:isso será representado em milissegundos.

Carimbo de data/hora da época em milissegundos
Modo de evento Obrigatório

Um campo para indicar se o evento será virtual, presencial ou ambos.

Enumeração: VIRTUAL, IN_PERSON ou HYBRID
Poster images Obrigatório

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Observação:é altamente recomendável usar uma imagem. Se um selo for fornecido, garanta um espaço seguro de 24 dps na parte superior e inferior da imagem.

Consulte as orientações em Especificações de imagem.
Localização – país Obrigatório sob certas condições

O país em que o evento está acontecendo.

Observação:isso é necessário para eventos PRESENCIAIS ou HÍBRIDOS.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: cidade Obrigatório sob certas condições

A cidade em que o evento está acontecendo.

Observação:isso é necessário para eventos PRESENCIAIS ou HÍBRIDOS.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: mostrar endereço Obrigatório sob certas condições

O endereço ou nome do local onde o evento vai acontecer e que deve ser mostrado ao usuário.

Observação:isso é necessário para eventos PRESENCIAIS ou HÍBRIDOS.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - Endereço Opcional O endereço da rua (se aplicável) do local em que o evento está sendo realizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: estado Opcional O estado ou a província (se aplicável) em que o evento está sendo realizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - CEP Opcional O CEP (se aplicável) do local em que o evento está sendo realizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: bairro Opcional O bairro (se aplicável) em que o evento está sendo realizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Horário de término Opcional

O carimbo de data/hora da época em que o evento deve terminar.

Observação:isso será representado em milissegundos.

Carimbo de data/hora da época em milissegundos
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

Selos Opcional

Cada selo é um texto livre (máximo de 15 caracteres) ou uma imagem pequena.

Selo: texto Opcional

Título do selo

Observação:o selo precisa ter texto ou imagem.

Texto livre

Tamanho de texto recomendado: até 15 caracteres

Selo - imagem Opcional

Imagem pequena

Tratamento especial de UX, por exemplo, como uma sobreposição de selo na miniatura da imagem/vídeo.

Observação:o selo precisa ter texto ou imagem.

Consulte as orientações em Especificações de imagem.
Price - CurrentPrice Obrigatório sob certas condições

O preço atual do ingresso/passe para o evento.

Precisa ser fornecido se o preço tachado for informado.

Texto livre
Price - StrikethroughPrice Opcional O preço original do ingresso/passe para o evento. Texto livre
Frase de destaque de preço Opcional Frase de destaque de preço para apresentar uma promoção, evento ou desconto para membros, se disponível.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

Categorias de conteúdo Opcional Descreva a categoria do conteúdo na entidade.

Lista de tipos enumerados qualificados

  • TYPE_MOVIES_AND_TV_SHOWS (exemplo: cinema)
  • TYPE_DIGITAL_GAMES (exemplo: eSports)
  • TYPE_MUSIC (exemplo: show)
  • TYPE_TRAVEL_AND_LOCAL (exemplo: tour, festival)
  • TYPE_HEALTH_AND_FITENESS (exemplo: aula de ioga)
  • TYPE_EDUCATION (exemplo: turma)
  • TYPE_SPORTS (exemplo: jogo de futebol)
  • TYPE_DATING (exemplo: encontro)

Consulte a seção "Categoria de conteúdo" para orientações.

LodgingEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

String

Tamanho de texto recomendado: no máximo 50 caracteres

Poster images Obrigatório

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Observação:se um selo for fornecido, garanta um espaço seguro de 24 dps na parte de cima e de baixo da imagem.

Consulte as orientações em Especificações de imagem.
Localização – país Obrigatório O país em que a hospedagem está acontecendo.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: cidade Obrigatório A cidade em que a hospedagem está acontecendo.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: mostrar endereço Obrigatório O endereço da hospedagem que será exibido para o usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - Endereço Opcional O endereço (se aplicável) da hospedagem.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: estado Opcional O estado ou a província (se aplicável) em que a hospedagem está localizada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - CEP Opcional O CEP (se aplicável) da hospedagem.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: bairro Opcional O bairro (se aplicável) da hospedagem.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Selos Opcional

Cada selo é um texto livre (máximo de 15 caracteres) ou uma imagem pequena.

Selo: texto Opcional

Título do selo

Observação:o selo precisa ter texto ou imagem.

Texto livre

Tamanho de texto recomendado: até 15 caracteres

Selo - imagem Opcional

Imagem pequena

Tratamento especial de UX, por exemplo, como uma sobreposição de selo na miniatura da imagem/vídeo.

Observação:é necessário ter texto ou imagem para o selo.

Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

AvailabilityTimeWindow - Horário de início Opcional O carimbo de data/hora da época em milissegundos em que a hospedagem deve estar aberta/disponível. Carimbo de data/hora da época em milissegundos
AvailabilityTimeWindow: hora de término Opcional O carimbo de data/hora da época em milissegundos até que a hospedagem esteja aberta/disponível. Carimbo de data/hora da época em milissegundos
Rating - Max value Opcional

O valor máximo da escala de avaliação.

Precisa ser fornecido se o valor atual da classificação também for informado.

Número maior ou igual a 0,0
Rating - Current value Opcional

O valor atual da escala de avaliação.

Precisa ser fornecido se o valor máximo de avaliação também for fornecido.

Número maior ou igual a 0,0
Rating - Count Opcional

O número de classificações do estabelecimento.

Observação:forneça esse campo se o app controlar como a contagem é mostrada aos usuários. Use uma string concisa. Por exemplo, se a contagem for 1.000.000, use uma abreviação como 1M para que ela não seja truncada em tamanhos de tela menores.

String
Rating - Count Value Opcional

O número de classificações do estabelecimento.

Observação:forneça esse campo se você não estiver processando a lógica de abreviação de exibição por conta própria. Se "Contagem" e "Valor da contagem" estiverem presentes, a "Contagem" será mostrada aos usuários.

Longa
Price - CurrentPrice Obrigatório sob certas condições

O preço atual da hospedagem.

Precisa ser fornecido se o preço tachado for informado.

Texto livre
Price - StrikethroughPrice Opcional O preço original da hospedagem, que aparece com desconto na interface. Texto livre
Frase de destaque de preço Opcional Frase de destaque de preço para apresentar uma promoção, evento ou desconto para membros, se disponível.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

StoreEntity

O objeto StoreEntity representa uma loja individual que os parceiros de desenvolvedores querem publicar, como um restaurante ou mercado.

Atributo Requisito Descrição Formato
Poster images Obrigatório É necessário fornecer pelo menos uma imagem. Consulte as orientações em Especificações de imagem.
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Title Opcional O nome da loja.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

Location Opcional o local da loja.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

Callout Opcional Frase de destaque para apresentar uma promoção, evento ou atualização para a loja, se disponível.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

Callout fine print Opcional Texto com os termos da frase de destaque.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

Description Opcional Uma descrição da loja.

Texto livre

Tamanho de texto recomendado: menos de 90 caracteres (um texto muito longo será mostrado com reticências)

Rating - Max value Opcional

O valor máximo da escala de avaliação.

Precisa ser fornecido se o valor atual da classificação também for informado.

Número maior ou igual a 0,0
Rating - Current value Opcional

O valor atual da escala de avaliação.

Precisa ser fornecido se o valor máximo de avaliação também for fornecido.

Número maior ou igual a 0,0
Rating - Count Opcional

O número de classificações do estabelecimento.

Observação:forneça esse campo se o app quiser controlar como isso é mostrado aos usuários. Forneça a string concisa que pode ser mostrada ao usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1M para que ela não seja truncada em tamanhos de tela menores.

String
Rating - Count Value Opcional

O número de classificações do estabelecimento.

Observação:forneça esse campo se não quiser processar a lógica de abreviação de exibição por conta própria. Se "Contagem" e "Valor da contagem" estiverem presentes, usaremos a contagem para mostrar aos usuários.

Longa

PointOfInterestEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

String

Tamanho de texto recomendado: no máximo 50 caracteres

Poster images Obrigatório

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Observação:é altamente recomendável usar uma imagem. Se um selo for fornecido, garanta um espaço seguro de 24 dps na parte superior e inferior da imagem.

Consulte as orientações em Especificações de imagem.
Localização – país Obrigatório O país em que o ponto de interesse está localizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: cidade Obrigatório A cidade em que o ponto de interesse está acontecendo.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: mostrar endereço Obrigatório O endereço do ponto de interesse que será mostrado ao usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - Endereço Opcional O endereço (se aplicável) do ponto de interesse.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: estado Opcional O estado ou a província (se aplicável) em que o ponto de interesse está localizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - CEP Opcional O CEP (se aplicável) do ponto de interesse.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: bairro Opcional O bairro (se aplicável) do ponto de interesse.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

AvailabilityTimeWindow - Horário de início Opcional O carimbo de data/hora da época em milissegundos em que o ponto de interesse deve estar aberto/disponível. Carimbo de data/hora da época em milissegundos
AvailabilityTimeWindow: hora de término Opcional O carimbo de data/hora da época em milissegundos até que o ponto de interesse esteja aberto/disponível. Carimbo de data/hora da época em milissegundos
Selos Opcional

Cada selo é um texto livre (máximo de 15 caracteres) ou uma imagem pequena.

Selo: texto Opcional

Título do selo

Observação:o selo precisa ter texto ou imagem.

Texto livre

Tamanho de texto recomendado: até 15 caracteres

Selo - imagem Opcional

Imagem pequena

Tratamento especial de UX, por exemplo, como uma sobreposição de selo na miniatura da imagem/vídeo.

Observação:é necessário ter texto ou imagem para o selo.

Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

Rating - Max value Opcional

O valor máximo da escala de avaliação.

Precisa ser fornecido se o valor atual da classificação também for informado.

Número maior ou igual a 0,0
Rating - Current value Opcional

O valor atual da escala de avaliação.

Precisa ser fornecido se o valor máximo de avaliação também for fornecido.

Número maior ou igual a 0,0
Rating - Count Opcional

A contagem das classificações do ponto de interesse.

Observação:forneça esse campo se o app controlar como a contagem é mostrada aos usuários. Use uma string concisa. Por exemplo, se a contagem for 1.000.000, use uma abreviação como 1M para que ela não seja truncada em tamanhos de tela menores.

String
Rating - Count Value Opcional

A contagem das classificações do ponto de interesse.

Observação:forneça esse campo se você não estiver processando a lógica de abreviação de exibição por conta própria. Se "Contagem" e "Valor da contagem" estiverem presentes, "Contagem" será mostrada aos usuários.

Longa
Price - CurrentPrice Obrigatório sob certas condições

O preço atual dos ingressos/entrada para o ponto de interesse.

Precisa ser fornecido se o preço tachado for informado.

Texto livre
Price - StrikethroughPrice Opcional O preço original dos ingressos/entrada para o ponto de interesse. Texto livre
Frase de destaque de preço Opcional Frase de destaque de preço para apresentar uma promoção, evento ou desconto para membros, se disponível.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo pode ser mostrado com reticências)

Categorias de conteúdo Opcional Descreva a categoria do conteúdo na entidade.

Lista de tipos enumerados qualificados

  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_MOVIES_AND_TV_SHOWS (exemplo: teatro)
  • TYPE_MEDICAL (exemplo: hospital)
  • TYPE_EDUCATION (exemplo: escola)
  • TYPE_SPORTS (exemplo: estádio)

Consulte a seção "Categoria de conteúdo" para orientações.

PersonEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Perfil: nome Obrigatório Nome ou identificador do perfil, por exemplo, "João Silva", "@EquipePixel" etc.

String

Tamanho de texto recomendado: no máximo 50 caracteres

Perfil - Avatar Obrigatório

Foto do perfil ou imagem do avatar do usuário.

Observação:a imagem precisa ser quadrada (1:1).

Consulte as orientações em Especificações de imagem.
Perfil - Texto adicional Opcional Texto livre, como o identificador do perfil.

Texto livre

Tamanho de texto recomendado: até 15 caracteres

Perfil - Imagem adicional Opcional Imagem pequena, como um selo de autenticidade. Consulte as orientações em Especificações de imagem.
Imagem de cabeçalho Opcional

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Observação:é altamente recomendável usar uma imagem. Se um selo for fornecido, garanta um espaço seguro de 24 dps na parte superior e inferior da imagem.

Consulte as orientações em Especificações de imagem.
Popularidade: contagem Opcional

Indicação do número de seguidores ou do valor de popularidade, por exemplo, "3,7 M".

Observação:se os valores de "Contagem" e "Valor da contagem" forem fornecidos, a contagem será usada.

String

Tamanho de texto recomendado: máximo de 20 caracteres para a combinação de contagem + rótulo

Popularidade: valor da contagem Opcional

O número de seguidores ou o valor de popularidade.

Observação:forneça o valor da contagem se o app não quiser processar a lógica de como um grande número deve ser otimizado para diferentes tamanhos de tela. Se os dois forem fornecidos, a contagem será usada.

Longa
Popularidade - marcador Opcional Indicação do rótulo de popularidade, por exemplo, "Curtidas".

String

Tamanho de texto recomendado: máximo de 20 caracteres para a combinação de contagem + rótulo

Popularidade - Visual Opcional

Indicação do motivo da interação. Por exemplo, uma imagem mostrando o ícone de curtidas, emojis.

É possível fornecer mais de uma imagem, embora nem todas possam aparecer em todos os formatos.

Observação:precisa ser uma imagem quadrada 1:1

Consulte as orientações em Especificações de imagem.
Rating - Max value Obrigatório

O valor máximo da escala de avaliação.

Precisa ser fornecido se o valor atual da classificação também for informado.

Número maior ou igual a 0,0
Rating - Current value Obrigatório

O valor atual da escala de avaliação.

Precisa ser fornecido se o valor máximo de avaliação também for fornecido.

Número maior ou igual a 0,0
Rating - Count Opcional

O número de classificações recebidas pela entidade.

Observação:forneça esse campo se o app quiser controlar como isso é mostrado aos usuários. Forneça a string concisa que pode ser mostrada ao usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1M para que ela não seja truncada em tamanhos de tela menores.

String
Rating - Count Value Opcional

O número de classificações recebidas pela entidade.

Observação:forneça esse campo se não quiser processar a lógica de abreviação de exibição por conta própria. Se "Contagem" e "Valor da contagem" estiverem presentes, usaremos a contagem para mostrar aos usuários.

Longa
Localização – país Opcional O país em que a pessoa está localizada ou servindo.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: cidade Opcional A cidade em que a pessoa está ou trabalha.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: mostrar endereço Opcional O endereço em que a pessoa está ou trabalha será mostrado ao usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - Endereço Opcional O endereço (se aplicável) em que a pessoa está ou trabalha.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: estado Opcional O estado (se aplicável) em que a pessoa está localizada ou trabalhando.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - CEP Opcional O CEP (se aplicável) de onde a pessoa está ou trabalha.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: bairro Opcional O bairro (se aplicável) onde a pessoa está ou trabalha.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Selos Opcional

Cada selo é um texto livre (máximo de 15 caracteres) ou uma imagem pequena.

Selo: texto Opcional

Título do selo

Observação:o selo precisa ter texto ou imagem.

Texto livre

Tamanho de texto recomendado: até 15 caracteres

Selo - imagem Opcional

Imagem pequena

Tratamento especial de UX, por exemplo, como uma sobreposição de selo na miniatura da imagem/vídeo.

Observação:o selo precisa ter texto ou imagem.

Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

Categorias de conteúdo Opcional Descreva a categoria do conteúdo na entidade.

Lista de tipos enumerados qualificados

  • TYPE_HEALTH_AND_FITENESS (exemplo: instrutor de ioga/fitness)
  • TYPE_HOME_AND_AUTO (exemplo: encanador)
  • TYPE_SPORTS (exemplo: Player)
  • TYPE_DATING

Consulte a seção "Categoria de conteúdo" para orientações.

RestaurantReservationEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

String

Tamanho de texto recomendado: no máximo 50 caracteres

Horário de início da reserva Obrigatório O carimbo de data/hora da época em milissegundos em que a reserva deve começar. Carimbo de data/hora da época em milissegundos
Localização – país Obrigatório O país em que o restaurante está localizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: cidade Obrigatório A cidade em que o restaurante está localizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: mostrar endereço Obrigatório O endereço do restaurante que será mostrado ao usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - Endereço Opcional O endereço (se aplicável) do restaurante.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: estado Opcional O estado ou a província (se aplicável) em que o restaurante está localizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - CEP Opcional O CEP (se aplicável) do restaurante.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: bairro Opcional O bairro (se aplicável) do restaurante.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Poster images Opcional Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9 Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

Tamanho da tabela Opcional O número de pessoas no grupo de reserva Número inteiro > 0

EventReservationEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

String

Tamanho de texto recomendado: no máximo 50 caracteres

Horário de início Obrigatório

O carimbo de data/hora da época em que o evento deve começar.

Observação:isso será representado em milissegundos.

Carimbo de data/hora da época em milissegundos
Modo de evento Obrigatório

Um campo para indicar se o evento será virtual, presencial ou ambos.

Enumeração: VIRTUAL, IN_PERSON ou HYBRID
Localização – país Obrigatório sob certas condições

O país em que o evento está acontecendo.

Observação:isso é necessário para eventos PRESENCIAIS ou HÍBRIDOS.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: cidade Obrigatório sob certas condições

A cidade em que o evento está acontecendo.

Observação:isso é necessário para eventos PRESENCIAIS ou HÍBRIDOS.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: mostrar endereço Obrigatório sob certas condições

O endereço ou nome do local onde o evento vai acontecer e que deve ser mostrado ao usuário.

Observação:isso é necessário para eventos PRESENCIAIS ou HÍBRIDOS.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - Endereço Opcional O endereço da rua (se aplicável) do local em que o evento está sendo realizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: estado Opcional O estado ou a província (se aplicável) em que o evento está sendo realizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - CEP Opcional O CEP (se aplicável) do local em que o evento está sendo realizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: bairro Opcional O bairro (se aplicável) em que o evento está sendo realizado.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Poster images Opcional

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Observação:é altamente recomendável usar uma imagem. Se um selo for fornecido, garanta um espaço seguro de 24 dps na parte superior e inferior da imagem.

Consulte as orientações em Especificações de imagem.
Horário de término Opcional

O carimbo de data/hora da época em que o evento deve terminar.

Observação:isso será representado em milissegundos.

Carimbo de data/hora da época em milissegundos
Provedor de serviços: nome Opcional

O nome do provedor de serviços.

Observação:é necessário ter texto ou imagem para o provedor de serviços.

Texto livre. Por exemplo, nome do organizador do evento/da turnê
Provedor de serviços: imagem Opcional

O logotipo/imagem do provedor de serviços.

Observação:é necessário ter texto ou imagem para o provedor de serviços.

Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

Selos Opcional

Cada selo é um texto livre (máximo de 15 caracteres) ou uma imagem pequena.

Selo: texto Opcional

Título do selo

Observação:o selo precisa ter texto ou imagem.

Texto livre

Tamanho de texto recomendado: até 15 caracteres

Selo - imagem Opcional

Imagem pequena

Tratamento especial de UX, por exemplo, como uma sobreposição de selo na miniatura da imagem/vídeo.

Observação:é necessário ter texto ou imagem para o selo.

Consulte as orientações em Especificações de imagem.
ID da reserva Opcional O ID da reserva do evento. Texto livre
Price - CurrentPrice Obrigatório sob certas condições

O preço atual do ingresso/passe para o evento.

Precisa ser fornecido se o preço tachado for informado.

Texto livre
Price - StrikethroughPrice Opcional O preço original do ingresso/passe para o evento. Texto livre
Frase de destaque de preço Opcional Frase de destaque de preço para apresentar uma promoção, evento ou desconto para membros, se disponível.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

Rating - Max value Opcional

O valor máximo da escala de avaliação.

Precisa ser fornecido se o valor atual da classificação também for informado.

Número maior ou igual a 0,0
Rating - Current value Opcional

O valor atual da escala de avaliação.

Precisa ser fornecido se o valor máximo de avaliação também for fornecido.

Número maior ou igual a 0,0
Rating - Count Opcional

A contagem das classificações do evento.

Observação:forneça esse campo se o app quiser controlar como isso é mostrado aos usuários. Forneça a string concisa que pode ser mostrada ao usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1M para que ela não seja truncada em tamanhos de tela menores.

String
Rating - Count Value Opcional

A contagem das classificações do evento.

Observação:forneça esse campo se não quiser processar a lógica de abreviação de exibição por conta própria. Se "Contagem" e "Valor da contagem" estiverem presentes, usaremos a contagem para mostrar aos usuários.

Longa
Categorias de conteúdo Opcional Descreva a categoria do conteúdo na entidade.

Lista de tipos enumerados qualificados

  • TYPE_MOVIES_AND_TV_SHOWS (exemplo: cinema)
  • TYPE_DIGITAL_GAMES (exemplo: eSports)
  • TYPE_MUSIC (exemplo: show)
  • TYPE_TRAVEL_AND_LOCAL (exemplo: tour, festival)
  • TYPE_HEALTH_AND_FITENESS (exemplo: aula de ioga)
  • TYPE_EDUCATION (exemplo: turma)
  • TYPE_SPORTS (exemplo: jogo de futebol)
  • TYPE_DATING (exemplo: encontro)

Consulte a seção "Categoria de conteúdo" para orientações.

LodgingReservationEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

Texto livre. Por exemplo, "Sua estadia de 12 de dezembro"

Tamanho de texto recomendado: no máximo 50 caracteres

Horário do check-in Obrigatório O carimbo de data/hora da época em milissegundos que representa o horário de check-in da reserva. Carimbo de data/hora da época em milissegundos
Horário do check-out Obrigatório O carimbo de data/hora da época em milissegundos que representa o horário de check-out da reserva. Carimbo de data/hora da época em milissegundos
Localização – país Obrigatório O país em que a hospedagem está localizada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: cidade Obrigatório A cidade em que a hospedagem está localizada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: mostrar endereço Obrigatório O endereço da hospedagem que será exibido para o usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - Endereço Opcional O endereço (se aplicável) da hospedagem.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: estado Opcional O estado ou a província (se aplicável) em que a hospedagem está localizada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização - CEP Opcional O CEP (se aplicável) da hospedagem.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Localização: bairro Opcional O bairro (se aplicável) da hospedagem.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Poster images Opcional

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Observação:se um selo for fornecido, garanta um espaço seguro de 24 dps na parte de cima e de baixo da imagem.

Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

ID da reserva Opcional O ID da reserva de hospedagem. Texto livre
Rating - Max value Opcional

O valor máximo da escala de avaliação.

Precisa ser fornecido se o valor atual da classificação também for informado.

Número maior ou igual a 0,0
Rating - Current value Opcional

O valor atual da escala de avaliação.

Precisa ser fornecido se o valor máximo de avaliação também for fornecido.

Número maior ou igual a 0,0
Rating - Count Opcional

O número de classificações do estabelecimento.

Observação:forneça esse campo se o app quiser controlar como isso é mostrado aos usuários. Forneça a string concisa que pode ser mostrada ao usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1M para que ela não seja truncada em tamanhos de tela menores.

String
Rating - Count Value Opcional

O número de classificações do estabelecimento.

Observação:forneça esse campo se não quiser processar a lógica de abreviação de exibição por conta própria. Se "Contagem" e "Valor da contagem" estiverem presentes, usaremos a contagem para mostrar aos usuários.

Longa
Price - CurrentPrice Obrigatório sob certas condições

O preço atual da hospedagem.

Precisa ser fornecido se o preço tachado for informado.

Texto livre
Price - StrikethroughPrice Opcional O preço original da hospedagem, que aparece com desconto na interface. Texto livre
Frase de destaque de preço Opcional Frase de destaque de preço para apresentar uma promoção, evento ou desconto para membros, se disponível.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

TransportationReservationEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

Texto livre. Por exemplo, "SFO para SAN"

Tamanho de texto recomendado: no máximo 50 caracteres

Tipo de transporte Obrigatório O modo/tipo de transporte da reserva. Enumeração: FLIGHT, TRAIN, BUS ou FERRY
Horário de partida Obrigatório O carimbo de data/hora da época em milissegundos que representa o horário de partida. Carimbo de data/hora da época em milissegundos
Horário de chegada Obrigatório O carimbo de data/hora da época em milissegundos que representa o horário de chegada. Carimbo de data/hora da época em milissegundos
Local de partida: país Opcional O país de partida.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de partida: cidade Opcional A cidade de partida.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de partida: exibir endereço Opcional O local de partida que será exibido para o usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de partida: endereço Opcional O endereço da rua (se aplicável) do local de partida.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de partida: estado Opcional O estado ou a província (se aplicável) do local de partida.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de partida: CEP Opcional O CEP (se aplicável) do local de partida.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de partida: bairro Opcional O bairro (se aplicável) do local de partida.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de chegada: país Opcional O país de chegada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de chegada: cidade Opcional A cidade de chegada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de chegada: exibir endereço Opcional O local de chegada que será exibido para o usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de chegada: endereço Opcional O endereço (se aplicável) do local de chegada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de chegada - estado Opcional O estado ou a província (se aplicável) do local de chegada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de chegada: CEP Opcional O CEP (se aplicável) do local de chegada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Local de chegada: bairro Opcional O bairro (se aplicável) do local de chegada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Provedor de serviços: nome Opcional

O nome do provedor de serviços.

Observação:é necessário ter texto ou imagem para o provedor de serviços.

Texto livre. Por exemplo, nome da companhia aérea
Provedor de serviços: imagem Opcional

O logotipo/imagem do provedor de serviços.

Observação:é necessário ter texto ou imagem para o provedor de serviços.

Consulte as orientações em Especificações de imagem.
Poster images Opcional

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

ID da reserva Opcional O ID da reserva de transporte. Texto livre
Price - CurrentPrice Obrigatório sob certas condições

O preço atual da reserva.

Precisa ser fornecido se o preço tachado for informado.

Texto livre
Price - StrikethroughPrice Opcional O preço original da reserva, que aparece com desconto na interface. Texto livre
Frase de destaque de preço Opcional Frase de destaque de preço para apresentar uma promoção, evento ou desconto para membros, se disponível.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

Número do transporte Obrigatório O número do voo, do ônibus, do trem ou da balsa/cruzeiro. Texto livre
Horário de embarque Obrigatório O carimbo de data/hora da época que representa o horário de embarque da reserva (se aplicável). Carimbo de data/hora da época em milissegundos

VehicleRentalReservationEntity

Atributo Requisito Descrição Formato
Action Uri Obrigatório

Link direto para a entidade no app do provedor.

Observação: é possível usar links diretos para atribuição. Consulte as perguntas frequentes

URI
Título Obrigatório Título da entidade.

Texto livre. Por exemplo, "Avis Union Square SF"

Tamanho de texto recomendado: no máximo 50 caracteres

Horário de retirada Obrigatório O carimbo de data/hora da época que representa o horário de retirada da reserva. Carimbo de data/hora da época em milissegundos
Horário de retorno Opcional O carimbo de data/hora da época que representa o horário de check-out da reserva. Carimbo de data/hora da época em milissegundos
Endereço de retirada - País Opcional O país do local de retirada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de retirada - cidade Opcional A cidade do local de retirada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de retirada - Mostrar endereço Opcional O local de retirada que será exibido para o usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de retirada: endereço Opcional O endereço (se aplicável) do local de retirada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de retirada - Estado Opcional O estado ou a província (se aplicável) do local de retirada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de retirada: CEP Opcional O CEP (se aplicável) do local de retirada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de retirada - bairro Opcional O bairro (se aplicável) do local de retirada.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de devolução - País Opcional O país do local de devolução.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de devolução - Cidade Opcional A cidade do local de devolução.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de devolução - Endereço de exibição Opcional O local de retorno que será exibido para o usuário.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de devolução: endereço Opcional O endereço da rua (se aplicável) do local de devolução.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de devolução - estado Opcional O estado ou a província (se aplicável) do local de devolução.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de devolução: CEP Opcional O CEP (se aplicável) do local de devolução.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Endereço de devolução: bairro Opcional O bairro (se aplicável) do local de devolução.

Texto livre

Tamanho de texto recomendado: máx. de 20 caracteres

Provedor de serviços: nome Opcional

O nome do provedor de serviços.

Observação:é necessário ter texto ou imagem para o provedor de serviços.

Texto livre. Por exemplo, "Avis Car Rental".
Provedor de serviços: imagem Opcional

O logotipo/imagem do provedor de serviços.

Observação:é necessário ter texto ou imagem para o provedor de serviços.

Consulte as orientações em Especificações de imagem.
Poster images Opcional

Vamos mostrar apenas uma imagem quando várias forem fornecidas. A proporção recomendada é 16:9

Consulte as orientações em Especificações de imagem.
Descrição Opcional

Um único parágrafo de texto para descrever a entidade.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado: 180 caracteres

Lista de legendas Opcional

Até três legendas, cada uma com uma única linha de texto.

Observação:a descrição ou a lista de subtítulos será exibida ao usuário, não as duas.

Texto livre

Tamanho de texto recomendado para cada legenda: no máximo 50 caracteres

ID de confirmação Opcional O ID de confirmação da reserva de aluguel de veículo. Texto livre
Price - CurrentPrice Obrigatório sob certas condições

O preço atual da reserva.

Precisa ser fornecido se o preço tachado for informado.

Texto livre
Price - StrikethroughPrice Opcional O preço original da reserva, que aparece com desconto na interface. Texto livre
Frase de destaque de preço Opcional Frase de destaque de preço para apresentar uma promoção, evento ou desconto para membros, se disponível.

Texto livre

Tamanho de texto recomendado: menos de 45 caracteres (um texto muito longo será mostrado com reticências)

Especificações da imagem

Consulte abaixo as especificações necessárias para recursos de imagem:

Proporção Mínimo de pixels Pixels recomendados

Quadrada (1 x 1)

Preferida

300 x 300 1.200 x 1.200
Paisagem (1,91 x 1) 600 x 314 1.200 x 628
Retrato (4 x 5) 480 x 600 960 x 1.200

As imagens precisam ser hospedadas em CDNs públicas para que possam ser acessadas pelo Google.

Formatos de arquivo

PNG, JPG, GIF estático, WebP

Tamanho máximo do arquivo

5.120 KB

Recomendações adicionais

  • Área de segurança da imagem: posicione o conteúdo importante no centro da imagem, ocupando 80% do espaço.
  • Use um plano de fundo transparente para que a imagem possa ser exibida corretamente nas configurações do tema claro e escuro.

Categoria do conteúdo

A categoria de conteúdo permite que os apps publiquem conteúdo pertencente a várias categorias. Isso mapeia o conteúdo com algumas das categorias predefinidas, ou seja:

  • TYPE_EDUCATION
  • TYPE_SPORTS
  • TYPE_MOVIES_AND_TV_SHOWS
  • TYPE_BOOKS
  • TYPE_AUDIOBOOKS
  • TYPE_MUSIC
  • TYPE_DIGITAL_GAMES
  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_HOME_AND_AUTO
  • TYPE_BUSINESS
  • TYPE_NEWS
  • TYPE_FOOD_AND_DRINK
  • TYPE_SHOPPING
  • TYPE_HEALTH_AND_FITENESS
  • TYPE_MEDICAL
  • TYPE_PARENTING
  • TYPE_DATING

As imagens precisam ser hospedadas em CDNs públicas para que possam ser acessadas pelo Google.

Diretrizes para usar as categorias de conteúdo

  1. Algumas entidades, como ArticleEntity e GenericFeaturedEntity, podem usar qualquer uma das categorias de conteúdo. Para outras entidades, como EventEntity, EventReservationEntity e PointOfInterestEntity, apenas um subconjunto dessas categorias se qualifica. Confira a lista de categorias qualificadas para um tipo de entidade antes de preencher a lista.
  2. Use o tipo de entidade específico para algumas categorias de conteúdo em vez de uma combinação de entidades genéricas e ContentCategory:

  3. O campo "ContentCategory" é opcional e deve ser deixado em branco se o conteúdo não pertencer a nenhuma das categorias mencionadas anteriormente.

  4. Se várias categorias forem fornecidas, coloque-as em ordem de relevância para o conteúdo, com a categoria mais relevante em primeiro lugar na lista.

Etapa 2: fornecer dados do cluster

É recomendável executar o job de publicação de conteúdo em segundo plano (por exemplo, usando o WorkManager) e o programar com frequência ou por evento (por exemplo, toda vez que o usuário abrir o app ou adicionar algo ao carrinho).

AppEngagePublishClient é responsável pela publicação de clusters.

Estas são as APIs para publicar clusters no cliente:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

Essa API é usada para conferir se o serviço está disponível para integração e se o conteúdo pode ser apresentado no dispositivo.

Kotlin

client.isServiceAvailable.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Handle IPC call success
        if(task.result) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
}

Java

client.isServiceAvailable().addOnCompleteListener(task - > {
    if (task.isSuccessful()) {
        // Handle success
        if(task.getResult()) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
});

publishRecommendationClusters

Essa API é usada para publicar uma lista de objetos RecommendationCluster.

Kotlin

client.publishRecommendationClusters(
      PublishRecommendationClustersRequest.Builder()
        .addRecommendationCluster(
          RecommendationCluster.Builder()
            .addEntity(entity1)
            .addEntity(entity2)
            .setTitle("Top Picks For You")
            .build()
        )
        .build()
    )

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Top Picks For You")
                        .build())
                .build());

Quando o serviço recebe a solicitação, as ações abaixo ocorrem em uma transação:

  • Os dados do RecommendationCluster do parceiro do desenvolvedor são removidos.
  • Os dados da solicitação são analisados e armazenados no cluster de recomendação atualizado.

Em caso de erro, o pedido inteiro é rejeitado e o estado atual é mantido.

publishFeaturedCluster

Essa API é usada para publicar uma lista de objetos FeaturedCluster.

Kotlin

client.publishFeaturedCluster(
    PublishFeaturedClusterRequest.Builder()
      .setFeaturedCluster(
        FeaturedCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java

client.publishFeaturedCluster(
            new PublishFeaturedClustersRequest.Builder()
                .addFeaturedCluster(
                    new FeaturedCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

Quando o serviço recebe a solicitação, as ações abaixo ocorrem em uma transação:

  • Os dados do FeaturedCluster do parceiro do desenvolvedor são removidos.
  • Os dados da solicitação são analisados e armazenados no cluster de destaque atualizado.

Em caso de erro, a solicitação inteira é rejeitada e o estado atual é mantido.

publishContinuationCluster

Essa API é usada para publicar um objeto ContinuationCluster.

Kotlin

client.publishContinuationCluster(
    PublishContinuationClusterRequest.Builder()
      .setContinuationCluster(
        ContinuationCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java

client.publishContinuationCluster(
            new PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    new ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

Quando o serviço recebe a solicitação, as ações abaixo ocorrem em uma transação:

  • Os dados do ContinuationCluster do parceiro do desenvolvedor são removidos.
  • Os dados da solicitação são analisados e armazenados no cluster de continuação atualizado.

Em caso de erro, a solicitação inteira é rejeitada e o estado atual é mantido.

publishUserAccountManagementRequest

Essa API é usada para publicar um card de login. A ação de login direciona os usuários à página de login do app para que ele possa publicar ou oferecer conteúdo mais personalizado.

Os metadados abaixo fazem parte do card de login:

Atributo Requisito Descrição
Action Uri Obrigatório Link direto para a ação (ou seja, leva à página de login do app)
Image Opcional: se não for fornecido, o título precisa ser fornecido

Imagem mostrada no card

Imagens com proporção de 16 x 9 e resolução de 1.264 x 712

Title Opcional: se não for fornecido, a imagem precisará ser fornecida Título do card
Action Text Opcional Texto mostrado no CTA (por exemplo, "Fazer login")
Subtitle Opcional Subtítulo opcional do card

Kotlin

var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Java

SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Quando o serviço recebe o pedido, as seguintes ações ocorrem em uma transação:

  • Os dados do UserAccountManagementCluster do parceiro do desenvolvedor são removidos.
  • Os dados do pedido são analisados e armazenados no cluster UserAccountManagementCluster atualizado.

Em caso de erro, a solicitação inteira é rejeitada e o estado atual é mantido.

updatePublishStatus

Se, por qualquer motivo interno, nenhum dos clusters for publicado, recomendamos atualizar o status de publicação usando a API updatePublishStatus. Isso é importante pelos seguintes motivos:

  • Informar o status em todos os casos possíveis, mesmo quando o conteúdo é publicado (STATUS == PUBLISHED), é fundamental para preencher painéis que usam o status explícito para transmitir informações de integridade e outras métricas da integração.
  • Se nenhum conteúdo for publicado, mas o status da integração não estiver corrompido (STATUS == NOT_PUBLISHED), o Google poderá evitar o acionamento de alertas nos painéis de integridade do app. Isso confirma que o conteúdo não foi publicado devido a uma situação esperada pelo provedor.
  • Ajuda os desenvolvedores a oferecer insights sobre quando os dados foram publicados ou não.
  • O Google pode usar os códigos de status para incentivar o usuário a executar ações específicas no app, como acessar o conteúdo ou resolver o problema.

Lista de códigos de status de publicação que podem ser usados:

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,

// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,

// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,

// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,

// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,

// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,

// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,

// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER

Se o conteúdo não for publicado porque o usuário não estava conectado, o Google recomenda publicar o card de login. Se, por algum motivo, os provedores não conseguirem publicar o card de login, recomendamos chamar a API updatePublishStatus com o código de status NOT_PUBLISHED_REQUIRES_SIGN_IN.

Kotlin

client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

Java

client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationClusters

Essa API é usada para excluir o conteúdo dos clusters de recomendação.

Kotlin

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

Quando o serviço recebe o pedido, ele remove os dados atuais dos clusters de recomendação. Em caso de erro, a solicitação inteira é rejeitada e o estado atual é mantido.

deleteFeaturedCluster

Essa API é usada para excluir o conteúdo do cluster de destaque.

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

Quando o serviço recebe o pedido, ele remove os dados atuais do cluster de destaque. Em caso de erro, a solicitação inteira é rejeitada e o estado existente é mantido.

deleteContinuationCluster

Essa API é usada para excluir o conteúdo do cluster de continuação.

Kotlin

client.deleteContinuationCluster()

Java

client.deleteContinuationCluster();

Quando o serviço recebe o pedido, ele remove os dados atuais do cluster de continuação. Em caso de erro, a solicitação inteira é rejeitada e o estado atual é mantido.

deleteUserManagementCluster

Essa API é usada para excluir o conteúdo do cluster UserAccountManagement.

Kotlin

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

Quando o serviço recebe o pedido, ele remove os dados atuais do cluster UserAccountManagement. Em caso de erro, a solicitação inteira é rejeitada e o estado atual é mantido.

deleteClusters

Essa API é usada para excluir o conteúdo de determinado tipo de cluster.

Kotlin

client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_CONTINUATION)
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      .build())

Java

client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_CONTINUATION)
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                .build());

Quando o serviço recebe a solicitação, ele remove os dados de todos os clusters que correspondem aos tipos especificados. Os clientes podem transmitir um ou vários tipos de clusters. Em caso de erro, a solicitação inteira é rejeitada e o estado existente é mantido.

Tratamento de erros

É recomendável detectar o resultado da tarefa nas APIs de publicação. Com isso, uma ação de acompanhamento pode ser realizada para extrair e reenviar uma tarefa bem-sucedida.

Kotlin

client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

Java

client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

O erro é retornado como AppEngageException e a causa é incluída como um código de erro.

Código do erro Nome do erro Observação
1 SERVICE_NOT_FOUND O serviço não está disponível no dispositivo.
2 SERVICE_NOT_AVAILABLE O serviço está disponível no dispositivo em questão, mas não no momento da chamada (por exemplo, está desativado).
3 SERVICE_CALL_EXECUTION_FAILURE A execução da tarefa falhou devido a problemas de linha de execução. Nesse caso, ela pode ser repetida.
4 SERVICE_CALL_PERMISSION_DENIED O autor da chamada não tem permissão para fazer a chamada de serviço.
5 SERVICE_CALL_INVALID_ARGUMENT A solicitação contém dados inválidos (por exemplo, tem um número de clusters maior do que o permitido).
6 SERVICE_CALL_INTERNAL Há um erro no serviço.
7 SERVICE_CALL_RESOURCE_EXHAUSTED A chamada de serviço é feita com muita frequência.

Etapa 3: processar intents de transmissão

Além de fazer chamadas de API de conteúdo de publicação usando um job, também é necessário configurar um BroadcastReceiver para receber a solicitação de publicação de conteúdo.

O objetivo principal das intents de transmissão é reativar o app e forçar a sincronização de dados. As intents de transmissão não são projetadas para envio muito frequente. Elas só são acionadas quando o serviço do Engage determina que o conteúdo pode estar desatualizado (por exemplo, é de uma semana atrás). Dessa forma, há mais confiança de que o usuário poderá ter uma nova experiência de conteúdo, mesmo que o aplicativo não tenha sido executado por um longo período.

O BroadcastReceiver precisa ser configurado de duas maneiras:

  • Registre dinamicamente uma instância da classe BroadcastReceiver usando Context.registerReceiver(). Isso permite a comunicação de aplicativos que ainda estão ativos na memória.

Kotlin

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
  // is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
  // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
  // received
}

fun registerBroadcastReceivers(context: Context){
  var  context = context
  context = context.applicationContext

// Register Recommendation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Continuation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)
}

Java

class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);
}
  • Declare estaticamente uma implementação com a tag <receiver> no arquivo AndroidManifest.xml. Isso permite que o aplicativo receba intents de transmissão quando não está em execução e também permite que ele publique o conteúdo.

<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
      </intent-filter>
   </receiver>
</application>

As intents abaixo são enviadas pelo serviço:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION Recomendamos que você inicie uma chamada publishRecommendationClusters ao receber essa intent.
  • com.google.android.engage.action.PUBLISH_FEATURED Recomendamos que você inicie uma chamada publishFeaturedCluster ao receber essa intent.
  • com.google.android.engage.action.PUBLISH_CONTINUATION Recomendamos que você inicie uma chamada publishContinuationCluster ao receber essa intent.

Fluxo de trabalho de integração

Para acessar um guia explicativo sobre como verificar a integração após a conclusão, consulte Fluxo de trabalho de integração de desenvolvedor.

Perguntas frequentes

Consulte as Perguntas frequentes sobre o SDK Engage para acessar as perguntas frequentes.

Contato

Entre em contato com engage-developers@google.com se tiver perguntas durante o processo de integração.

Próximas etapas

Depois de concluir essa integração, as próximas etapas serão as seguintes:

  • Envie um e-mail para engage-developers@google.com e anexe seu APK integrado pronto para ser testado pelo Google.
  • O Google realiza uma verificação e revisão interna para garantir que a integração funcione como esperado. Se for necessário fazer mudanças, o Google vai entrar em contato informando todos os detalhes necessários.
  • Quando o teste estiver concluído e nenhuma mudança for necessária, o Google vai entrar em contato para informar que você pode começar a publicar o APK atualizado e integrado na Play Store.
  • Depois que o Google confirmar a publicação do APK atualizado na Play Store, seus clusters de recomendação, destaque e continuação poderão ser publicados e ficar visíveis aos usuários.