O Google está criando uma plataforma no dispositivo que organiza os apps dos usuários por categoria e possibilita uma nova experiência imersiva para consumo e descoberta de conteúdo personalizado de apps. Essa experiência em tela cheia oferece aos parceiros de desenvolvimento a oportunidade de mostrar os melhores conteúdos em um canal dedicado fora do app. Este guia contém instruções para os parceiros desenvolvedores a integrar as APIs conteúdos de eventos, usando o SDK Engage para preencher nova área de superfície.
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 viagens e sugestões de eventos de um parceiro desenvolvedor individual. Essas recomendações podem ser personalizado para o usuário ou generalizado (por exemplo, itens em alta). Usar para exibir artigos, eventos, hotéis ou lugares de interesse recomendações.
- Um cluster de recomendação pode ser composto de
ArticleEntity
,EventEntity
,LodgingEntity
,PointOfInterestEntity
ouStoreEntity
de listagens, mas uma mistura de diferentes tipos de entidade.
As recomendações têm a seguinte estrutura:
Cluster de recomendação: uma visualização de interface que contém um grupo de recomendações do mesmo parceiro do desenvolvedor.
Entidade: um objeto que representa um único item em um cluster. Isso oferece algumas entidades que seriam exibidas usando o Cluster de recomendação:
ArticleEntity: ArticleEntity representa uma recomendação de conteúdo de texto relacionado a viagens e eventos. Ele pode ser usado para artigos, postagens de blog, conteúdo de marketing, trechos de notícias etc.
EventEntity: EventEntity representa um evento que acontece na futuro. A hora de início do evento é uma informação essencial precisa ser comunicada aos usuários.
LodgingEntity: LodgingEntity representa uma acomodação, como como um hotel, apartamento, casa de férias de curto e longo prazos aluguel
StoreEntity: representa uma loja, um restaurante ou um café. etc. Ele destaca o conteúdo em que um restaurante ou loja é informação essencial que precisa ser transmitida para o usuários.
PointOfInterestEntity: PointOfInterestEntity representa uma local de interesse, como um posto de gasolina, local para eventos, parque temático, museu, atração turística, trilha de caminhada etc. Ele destaca o conteúdo em que a localização é uma informação crítica que precisa ser comunicadas aos usuários. Ele não deve ser usado para hospedagem, loja ou um restaurante.
- Um cluster de recomendação pode ser composto de
O cluster de continuação mostra o conteúdo que os usuários interagiram recentemente com vários parceiros de desenvolvimento em um único grupo de interfaces. Cada parceiro de desenvolvimento poderão transmitir no máximo 10 entidades na continuação cluster.
Seu conteúdo de continuação pode ter a seguinte estrutura:
ArticleEntity: ArticleEntity representa uma recomendação de conteúdo. que está relacionado a viagens eventos. Essa entidade pode ser usada para representar artigos de notícias inacabados ou outro conteúdo que o usuário gostaria de continuar consumindo de onde eles pararam. Por exemplo: trecho de notícias, postagem do blog snippet sobre um destino ou evento de viagem.
RestaurantReservaEntity: RestaurantReservaEntity representa uma reserva em um restaurante ou café e ajuda os usuários a monitorar reservas contínuas em restaurantes.
EventReservaEntity: EventReservaEntity representa uma reserva para um evento e ajuda os usuários a monitorar eventos reservas de eventos. Os eventos podem incluir, sem limitação, os seguintes:
- Eventos esportivos, como reservas para jogos de futebol americano
- Eventos de jogos, como reserva para eSports
- Eventos de entretenimento, como reservas de filmes em um cinema, show, teatro, autógrafo
- Viagens ou reservas de pontos de interesse, como tours guiados, museus ingressos
- Reservas para redes sociais / seminário / conferências
- Reservas de sessões de treinamento / educação
LodgingRepositoryEntity: LodgingEntityRepository representa uma reservas de hospedagem de viagens e ajuda os usuários a monitorar reservas contínuas de hotel ou aluguel por temporada.
TransportationReservaEntity: TransportationReservaEntity representa reservas de transporte por qualquer meio e ajuda os usuários acompanhe reservas para voos futuros ou em andamento, balsas, trens, ônibus, transporte por aplicativo ou cruzeiro.
VehicleRentalreservationEntity: VehicleRentalreservationEntity representa as reservas de aluguel de veículos e ajuda os usuários a monitorar ou reservas contínuas de aluguel de veículos.
O cluster de destaque é uma visualização de interface que mostra o herói escolhido.
GenericFeaturedEntity
de vários parceiros de desenvolvedores em um único grupo de interfaces. Há um único cluster "Destaques", que aparece perto do topo IU, com um posicionamento prioritário acima de todos os clusters de recomendação. Cada o parceiro do desenvolvedor pode transmitir uma única entidade de um digitar em destaque, com muitas entidades (possivelmente de tipos diferentes) de vários desenvolvedores de apps no cluster "Em destaque".GenericFeaturedEntity: a GenericFeaturedEntity é diferente da O item de recomendação nesse item em destaque precisa ser usado para um único principal conteúdo de desenvolvedores e deve representar o conteúdo conteúdo importante que será interessante e relevante para os usuários.
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 uma 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 5 | Pelo menos 5 | No máximo 25 (ArticleEntity , EventEntity ,
LodgingEntity , StoreEntity ou
PointOfInterestEntity ) |
Cluster de continuação | No máximo 1 | Pelo menos 1 | No máximo 10 (ArticleEntity ,
RestaurantReservationEntity
EventReservationEntity ,
LodgingReservationEntity ,
TransportationReservationEntity ou
VehicleRentalReservationEntity ). |
Cluster de destaque | No máximo 1 | Pelo menos 1 | No máximo 10 (GenericFeaturedEntity ) |
Etapa 1: fornecer dados da entidade
O SDK definiu entidades diferentes para representar cada tipo de item. Apoiamos as seguintes entidades da equipe de viagens e Categoria dos eventos:
GenericFeaturedEntity
ArticleEntity
EventEntity
LodgingEntity
StoreEntity
PointOfInterestEntity
RestaurantReservationEntity
EventReservationEntity
LodgingReservationEntity
TransportationReservationEntity
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 estas perguntas frequentes |
URI |
Poster images | Obrigatório | Mostraremos apenas uma imagem quando várias imagens forem fornecidas. A proporção recomendada é de 16:9 Observação:caso seja fornecido um crachá, deixe um espaço seguro de 24 dps nas partes 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: 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 superior da imagem/vídeo, por exemplo, como um selo sobrepor na imagem
|
|
Selo - Texto | Opcional | Título do selo Observação:é necessário usar texto ou imagem para receber o selo. |
Texto livre Tamanho de texto recomendado: no máximo 15 caracteres |
Selo - Imagem | Opcional | Imagem pequena Tratamento especial de UX, por exemplo, como sobreposição de selo na imagem/vídeo miniatura. Observação:é necessário usar texto ou imagem para receber o selo. |
Consulte as orientações em Especificações de imagem. |
Categorias de Conteúdo | Opcional | Descreva a categoria do conteúdo da entidade. | Lista de tipos enumerados Consulte a seção Categoria de conteúdo. para orientação. |
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 estas perguntas frequentes |
URI |
Título | Obrigatório | Título da entidade. | Texto livre Tamanho de texto recomendado: máximo de 50 caracteres |
Poster images | Opcional | Mostraremos apenas uma imagem quando várias imagens forem fornecidas. A proporção recomendada é de 16:9 Observação:a imagem é altamente recomendada. Se um selo for fornecido, garanta um espaço seguro de 24 dps nas partes superior e inferior do imagem |
Consulte as orientações em Especificações de imagem. |
Fonte: título | Opcional | O nome do autor, organização ou informante | Texto livre Tamanho de texto recomendado: menos de 25 caracteres |
Origem: imagem | Opcional | Uma imagem da fonte, como o autor, a organização, 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: 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 superior da imagem/vídeo, por exemplo, como selo sobrepor na imagem
|
|
Selo - Texto | Opcional | Título do selo Observação:é necessário usar texto ou imagem para receber o selo. |
Texto livre Tamanho de texto recomendado: no máximo 15 caracteres |
Selo - Imagem | Opcional | Imagem pequena Tratamento especial de UX, por exemplo, como sobreposição de selo na imagem/vídeo miniatura. Observação:é necessário usar texto ou imagem para receber o selo. |
Consulte as orientações em Especificações de imagem. |
Horário de publicação do conteúdo | Opcional | Carimbo de data/hora da época em milissegundos em que o conteúdo foi publicados / atualizados no app. | Carimbo de data/hora da época em milissegundos |
Last Engagement Time | Obrigatório sob certas condições | Carimbo de data/hora da época em milissegundos em que o usuário interagiu dessa entidade da última vez. Observação: este campo será obrigatório se esta entidade fizer parte de o 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 total consumido pelo usuário até o momento. Observação: este campo será obrigatório se esta entidade fizer parte de o cluster de continuação. |
Um valor inteiro entre 0 e 100. |
Categorias de Conteúdo | Opcional | Descreva a categoria do conteúdo da entidade. | Lista de tipos enumerados Consulte a seção Categoria de conteúdo. para orientação. |
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 estas perguntas frequentes |
URI |
Título | Obrigatório | Título da entidade. | String Tamanho de texto recomendado: máximo de 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: esse valor 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 os dois. |
Enumeração: VIRTUAL, IN_PERSON ou HYBRID |
Poster images | Obrigatório | Mostraremos apenas uma imagem quando várias imagens forem fornecidas. A proporção recomendada é de 16:9 Observação:a imagem é altamente recomendada. Se um selo for fornecido, garanta um espaço seguro de 24 dps nas partes superior e inferior do imagem |
Consulte as orientações em Especificações de imagem. |
Local: país | Obrigatório sob certas condições | O país onde o evento vai acontecer. Observação: isto é necessário para eventos que sejam IN_PERSON ou HÍBRIDO |
Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: cidade | Obrigatório sob certas condições | A cidade onde o evento está acontecendo. Observação: isto é necessário para eventos que sejam IN_PERSON ou HÍBRIDO |
Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Endereço de exibição | Obrigatório sob certas condições | O endereço ou nome do local onde o evento ocorrerá, que deveria ser exibido ao usuário. Observação: isto é necessário para eventos que sejam IN_PERSON ou HÍBRIDO |
Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: endereço | Opcional | O endereço (se aplicável) do local onde o evento será que está sendo hospedado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Estado | Opcional | O estado ou a província (se aplicável) onde o evento está sendo hospedado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: CEP | Opcional | O CEP (se aplicável) do local onde o evento está sendo hospedado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: bairro | Opcional | A vizinhança (se aplicável) onde o evento será realizado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Horário de término | Opcional |
O carimbo de data/hora da época em que o evento deve terminar. Observação: esse valor 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: 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:é necessário usar texto ou imagem para receber o selo. |
Texto livre Tamanho de texto recomendado: no máximo 15 caracteres |
Selo - Imagem | Opcional | Imagem pequena Tratamento especial de UX, por exemplo, como sobreposição de selo na imagem/vídeo miniatura. Observação:é necessário usar texto ou imagem para receber o selo. |
Consulte as orientações em Especificações de imagem. |
Preço - 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 |
Preço — 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 (texto muito longo) pode mostrar reticências) |
Categorias de Conteúdo | Opcional | Descreva a categoria do conteúdo da entidade. | Lista de tipos enumerados qualificados
Consulte a seção Categoria de conteúdo. para orientação. |
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 estas perguntas frequentes |
URI |
Título | Obrigatório | Título da entidade. | String Tamanho de texto recomendado: máximo de 50 caracteres |
Poster images | Obrigatório |
Mostraremos apenas uma imagem quando várias imagens forem fornecidas. Recomendadas a proporção é de 16:9 Observação:caso seja fornecido um crachá, deixe um espaço seguro de 24 dps nas partes de cima e de baixo da imagem. |
Consulte as orientações em Especificações de imagem. |
Local: país | Obrigatório | O país em que o hotel oferece hospedagem. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: cidade | Obrigatório | A cidade em que o hotel está hospedado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Endereço de exibição | Obrigatório | O endereço da hospedagem que será exibido para o usuário. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: endereço | Opcional | O endereço (se aplicável) do local. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Estado | Opcional | O estado ou a província (se aplicável) onde o hotel está localizado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: CEP | Opcional | O CEP (se aplicável) da hospedagem. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: bairro | Opcional | O bairro (se aplicável) do local de hospedagem. | Texto livre Tamanho de texto recomendado: no máximo 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:é necessário usar texto ou imagem para receber o selo. |
Texto livre Tamanho de texto recomendado: no máximo 15 caracteres |
Selo - Imagem | Opcional | Imagem pequena Tratamento especial de UX, por exemplo, como sobreposição de selo na imagem/vídeo miniatura. Observação:é necessário usar texto ou imagem para receber 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: máximo 50 caracteres |
DisponibilidadeTimeWindow - Horário de início | Opcional | O carimbo de data/hora da época em milissegundos em que a hospedagem deve ser aberto/disponível. | Carimbo de data/hora da época em milissegundos |
DisponibilidadeTimeWindow - Horário de término | Opcional | Carimbo de data/hora da época em milissegundos até o momento em que a hospedagem é esperada estar aberto/disponível. | Carimbo de data/hora da época em milissegundos |
Classificação - Valor máximo | 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 |
Classificação - Valor atual | 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 |
Classificação - Contagem | Opcional | A contagem de notas da hospedagem. Observação:insira esse campo se o app quiser controlar como isso é exibido para os usuários. Forneça informações concisas string que pode ser exibida para o usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1 milhão, para que não seja truncados em tamanhos de exibição menores. |
String |
Classificação - Valor da contagem | Opcional | A contagem de notas da hospedagem. Observação: insira este campo se você não quiser processar a lógica de abreviação de exibição. Se "Contagem" e "Valor de contagem" estiverem presentes, usaremos "Contagem" para exibir aos usuários |
Longo |
Preço - CurrentPrice | Obrigatório sob certas condições | O preço atual da hospedagem. Precisa ser fornecido se o preço promocional for informado. |
Texto livre |
Preço — StrikethroughPrice | Opcional | O preço original da hospedagem, que aparece com desconto de ML pela IU. | 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 (texto muito longo) pode mostrar 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 estas 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 | A localização 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) |
Classificação - Valor máximo | 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 |
Classificação - Valor atual | 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 |
Classificação - Contagem | Opcional | A contagem de notas da hospedagem. Observação:insira esse campo se o app quiser controlar como isso é exibido para os usuários. Forneça informações concisas string que pode ser exibida para o usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1 milhão, para que não seja truncados em tamanhos de exibição menores. |
String |
Classificação - Valor da contagem | Opcional | A contagem de notas da hospedagem. Observação: insira este campo se você não quiser processar a lógica de abreviação de exibição. Se "Contagem" e "Valor de contagem" estiverem presentes, usaremos "Contagem" para exibir aos usuários |
Longo |
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 estas perguntas frequentes |
URI |
Título | Obrigatório | Título da entidade. | String Tamanho de texto recomendado: máximo de 50 caracteres |
Poster images | Obrigatório | Mostraremos apenas uma imagem quando várias imagens forem fornecidas. A proporção recomendada é de 16:9 Observação:a imagem é altamente recomendada. Se um selo for fornecido, garanta um espaço de segurança de 24 dps nas partes superior e inferior a imagem |
Consulte as orientações em Especificações de imagem. |
Local: país | Obrigatório | O país em que o ponto de interesse está acontecendo. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: cidade | Obrigatório | A cidade em que o ponto de interesse está acontecendo. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Endereço de exibição | Obrigatório | O endereço do ponto de interesse que será exibido para o usuário. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: endereço | Opcional | O endereço (se aplicável) do ponto de interesse. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Estado | Opcional | O estado ou a província (se aplicável) no qual o ponto de interesse está localizado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: CEP | Opcional | O CEP (se aplicável) do ponto de interesse. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: bairro | Opcional | Bairro (se aplicável) do ponto de interesse. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
DisponibilidadeTimeWindow - Horário de início | Opcional | O carimbo de data/hora da época em milissegundos em que o ponto de interesse é devem estar abertos/disponíveis. | Carimbo de data/hora da época em milissegundos |
DisponibilidadeTimeWindow - Horário de término | Opcional | O carimbo de data/hora da época em milissegundos até o momento em que o ponto de interesse devem estar abertos/disponíveis. | 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:é necessário usar texto ou imagem para receber o selo. |
Texto livre Tamanho de texto recomendado: no máximo 15 caracteres |
Selo - Imagem | Opcional | Imagem pequena Tratamento especial de UX, por exemplo, como sobreposição de selo na imagem/vídeo miniatura. Observação:é necessário usar texto ou imagem para receber 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: máximo 50 caracteres |
Classificação - Valor máximo | 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 |
Classificação - Valor atual | 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 |
Classificação - Contagem | Opcional | A contagem das classificações do ponto de interesse. Observação:insira esse campo se o app quiser controlar como isso é exibido para os usuários. Forneça informações concisas string que pode ser exibida para o usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1 milhão, para que não seja truncados em tamanhos de exibição menores. |
String |
Classificação - Valor da contagem | Opcional | A contagem das classificações do ponto de interesse. Observação: insira este campo se você não quiser processar a lógica de abreviação de exibição. Se "Contagem" e "Valor de contagem" estiverem presentes, usaremos "Contagem" para exibir aos usuários |
Longo |
Preço - CurrentPrice | Obrigatório sob certas condições |
O preço atual dos ingressos/passagens de entrada para o ponto de interesse. Precisa ser fornecido se o preço tachado for informado. |
Texto livre |
Preço — StrikethroughPrice | Opcional | O preço original dos ingressos/passagens de entrada do 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 mostrar reticências) |
Categorias de Conteúdo | Opcional | Descreva a categoria do conteúdo da entidade. | Lista de tipos enumerados qualificados
Consulte a seção Categoria de conteúdo. para orientação. |
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 estas perguntas frequentes |
URI |
Título | Obrigatório | Título da entidade. | String Tamanho de texto recomendado: máximo de 50 caracteres |
Horário de início da reserva | Obrigatório | O carimbo de data/hora da época em milissegundos em que se espera que a reserva começar. | Carimbo de data/hora da época em milissegundos |
Local: país | Obrigatório | O país em que o restaurante está acontecendo. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: cidade | Obrigatório | A cidade onde o restaurante está acontecendo. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Endereço de exibição | Obrigatório | O endereço do restaurante que será exibido ao usuário. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: endereço | Opcional | O endereço (se aplicável) do restaurante. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Estado | Opcional | O estado ou a província (se aplicável) onde o restaurante está localizado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: CEP | Opcional | O CEP (se aplicável) do restaurante. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: bairro | Opcional | O bairro (se aplicável) do restaurante. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Poster images | Opcional | Mostraremos apenas uma imagem quando várias imagens forem fornecidas. Recomendadas a proporção é de 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: 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 estas perguntas frequentes |
URI |
Título | Obrigatório | Título da entidade. | String Tamanho de texto recomendado: máximo de 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: esse valor 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 os dois. |
Enumeração: VIRTUAL, IN_PERSON ou HYBRID |
Local: país | Obrigatório sob certas condições | O país onde o evento vai acontecer. Observação: isto é necessário para eventos que sejam IN_PERSON ou HÍBRIDO |
Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: cidade | Obrigatório sob certas condições | A cidade onde o evento está acontecendo. Observação: isto é necessário para eventos que sejam IN_PERSON ou HÍBRIDO |
Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Endereço de exibição | Obrigatório sob certas condições | O endereço ou nome do local onde o evento ocorrerá, que deveria ser exibido ao usuário. Observação: isto é necessário para eventos que sejam IN_PERSON ou HÍBRIDO |
Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: endereço | Opcional | O endereço (se aplicável) do local onde o evento será que está sendo hospedado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Estado | Opcional | O estado ou a província (se aplicável) onde o evento está sendo hospedado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: CEP | Opcional | O CEP (se aplicável) do local onde o evento está sendo hospedado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: bairro | Opcional | A vizinhança (se aplicável) onde o evento será realizado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Poster images | Opcional | Mostraremos apenas uma imagem quando várias imagens forem fornecidas. A proporção recomendada é de 16:9 Observação:a imagem é altamente recomendada. Se um selo for fornecido, garanta um espaço seguro de 24 dps nas partes superior e inferior do 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: esse valor 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 texto ou imagem para o serviço de nuvem. |
Texto livre. Por exemplo, nome do organizador do evento/tour |
Provedor de serviços: imagem | Opcional |
O logotipo/imagem do provedor de serviços. Observação: é necessário texto ou imagem para o serviço de nuvem. |
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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: 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:é necessário usar texto ou imagem para receber o selo. |
Texto livre Tamanho de texto recomendado: no máximo 15 caracteres |
Selo - Imagem | Opcional | Imagem pequena Tratamento especial de UX, por exemplo, como sobreposição de selo na imagem/vídeo miniatura. Observação:é necessário usar texto ou imagem para receber o selo. |
Consulte as orientações em Especificações de imagem. |
ID da reserva | Opcional | O ID da reserva do evento. | Texto livre |
Preço - 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 |
Preço — 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 (texto muito longo) pode mostrar reticências) |
Classificação - Valor máximo | 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 |
Classificação - Valor atual | 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 |
Classificação - Contagem | Opcional | A contagem das classificações do evento. Observação:insira esse campo se o app quiser controlar como isso é exibido para os usuários. Forneça informações concisas string que pode ser exibida para o usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1 milhão, para que não seja truncados em tamanhos de exibição menores. |
String |
Classificação - Valor da contagem | Opcional | A contagem das classificações do evento. Observação: insira este campo se você não quiser processar a lógica de abreviação de exibição. Se "Contagem" e "Valor de contagem" estiverem presentes, usaremos "Contagem" para exibir aos usuários |
Longo |
Categorias de Conteúdo | Opcional | Descreva a categoria do conteúdo da entidade. | Lista de tipos enumerados qualificados
Consulte a seção Categoria de conteúdo. para orientação. |
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 estas 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: máximo de 50 caracteres |
Horário de check-in | Obrigatório | Carimbo de data/hora da época em milissegundos que representa o horário da verificação para a reserva. | Carimbo de data/hora da época em milissegundos |
Hora do check-out | Obrigatório | O carimbo de data/hora da época em milissegundos que representa o horário do check-out para a reserva. | Carimbo de data/hora da época em milissegundos |
Local: país | Obrigatório | O país em que o hotel está localizado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: cidade | Obrigatório | A cidade em que o hotel está localizado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Endereço de exibição | Obrigatório | O endereço da hospedagem que será exibido para o usuário. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: endereço | Opcional | O endereço (se aplicável) do local. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local – Estado | Opcional | O estado ou a província (se aplicável) onde o hotel está localizado. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: CEP | Opcional | O CEP (se aplicável) da hospedagem. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local: bairro | Opcional | O bairro (se aplicável) do local de hospedagem. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Poster images | Opcional |
Mostraremos apenas uma imagem quando várias imagens forem fornecidas. Recomendadas a proporção é de 16:9 Observação:caso seja fornecido um crachá, deixe um espaço seguro 24 dps nas partes 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: máximo 50 caracteres |
ID da reserva | Opcional | O ID da reserva de hospedagem. | Texto livre |
Classificação - Valor máximo | 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 |
Classificação - Valor atual | 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 |
Classificação - Contagem | Opcional | A contagem de notas da hospedagem. Observação:insira esse campo se o app quiser controlar como isso é exibido para os usuários. Forneça informações concisas string que pode ser exibida para o usuário. Por exemplo, se a contagem for 1.000.000, use abreviações como 1 milhão, para que não seja truncados em tamanhos de exibição menores. |
String |
Classificação - Valor da contagem | Opcional | A contagem de notas da hospedagem. Observação: insira este campo se você não quiser processar a lógica de abreviação de exibição. Se "Contagem" e "Valor de contagem" estiverem presentes, usaremos "Contagem" para exibir aos usuários |
Longo |
Preço - CurrentPrice | Obrigatório sob certas condições | O preço atual da hospedagem. Precisa ser fornecido se o preço promocional for informado. |
Texto livre |
Preço — StrikethroughPrice | Opcional | O preço original da hospedagem, que aparece com desconto de ML pela IU. | 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 (texto muito longo) pode mostrar 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 estas perguntas frequentes |
URI |
Título | Obrigatório | Título da entidade. | Texto livre. Por exemplo, "SFO para SAN" Tamanho de texto recomendado: máximo de 50 caracteres |
Tipo de transporte | Obrigatório | O modo/tipo de transporte da reserva. | Enumeração: VOO, TREINAMENTO, ÔNIBUS ou FERRA |
Horário de partida | Obrigatório | 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 | 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: no máximo 20 caracteres |
Local de partida: cidade | Opcional | A cidade de partida. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local de partida - Endereço de exibição | Opcional | O local de partida que será exibido ao usuário. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local de partida - Endereço | Opcional | O endereço (se aplicável) do local de partida. | Texto livre Tamanho de texto recomendado: no máximo 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: no máximo 20 caracteres |
Local de partida - CEP | Opcional | O CEP (se aplicável) do local de partida. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local de partida - Bairro | Opcional | O bairro (se aplicável) do local de partida. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local de chegada - País | Opcional | O país de chegada. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local de chegada: cidade | Opcional | A cidade de chegada. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local de chegada – Exibir endereço | Opcional | O local de chegada que será exibido ao usuário. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local de chegada: endereço | Opcional | O endereço (se aplicável) do local de chegada. | Texto livre Tamanho de texto recomendado: no máximo 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: no máximo 20 caracteres |
Local de chegada - CEP | Opcional | O CEP (se aplicável) do local de chegada. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Local de chegada - Bairro | Opcional | O bairro (se aplicável) do local de chegada. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Provedor de serviços – Nome | Opcional |
O nome do provedor de serviços. Observação: é necessário texto ou imagem para o serviço de nuvem. |
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 texto ou imagem para o serviço de nuvem. |
Consulte as orientações em Especificações de imagem. |
Poster images | Opcional |
Mostraremos apenas uma imagem quando várias imagens forem fornecidas. Recomendadas a proporção é de 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: máximo 50 caracteres |
ID da reserva | Opcional | O ID da reserva de transporte. | Texto livre |
Preço - CurrentPrice | Obrigatório sob certas condições | O preço atual da reserva. Precisa ser fornecido se o preço promocional for informado. |
Texto livre |
Preço — StrikethroughPrice | Opcional | O preço original da reserva, que aparece com desconto no de ML pela IU. | 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 (texto muito longo) pode mostrar reticências) |
Número de transporte | Obrigatório | O número do voo, ônibus, trem ou 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 estas perguntas frequentes |
URI |
Título | Obrigatório | Título da entidade. | Texto livre. Por exemplo, "Avis Union Square SF" Tamanho de texto recomendado: máximo de 50 caracteres |
Hora 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: no máximo 20 caracteres |
Endereço de retirada: cidade | Opcional | A cidade do local de retirada. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Endereço de retirada – Endereço de exibição | Opcional | O local de retirada que será exibido ao usuário. | Texto livre Tamanho de texto recomendado: no máximo 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: no máximo 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: no máximo 20 caracteres |
Endereço de retirada - CEP | Opcional | O CEP (se aplicável) do local de retirada. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Endereço de retirada - Bairro | Opcional | O bairro (se aplicável) do local de retirada. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Endereço de devolução: país | Opcional | O país do local de devolução. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Endereço de devolução: cidade | Opcional | A cidade do local de devolução. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Endereço de devolução: endereço de exibição | Opcional | O local de devolução que será exibido ao usuário. | Texto livre Tamanho de texto recomendado: no máximo 20 caracteres |
Endereço de devolução: endereço | Opcional | O endereço (se aplicável) do local de devolução. | Texto livre Tamanho de texto recomendado: no máximo 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: no máximo 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: no máximo 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: no máximo 20 caracteres |
Provedor de serviços – Nome | Opcional |
O nome do provedor de serviços. Observação: é necessário texto ou imagem para o serviço de nuvem. |
Texto livre. Por exemplo, "Aluguel de carros Avis" |
Provedor de serviços: imagem | Opcional |
O logotipo/imagem do provedor de serviços. Observação: é necessário texto ou imagem para o serviço de nuvem. |
Consulte as orientações em Especificações de imagem. |
Poster images | Opcional |
Mostraremos apenas uma imagem quando várias imagens forem fornecidas. Recomendadas a proporção é de 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 legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado: 180 caracteres |
Lista de legendas | Opcional | Até três legendas, cada uma sendo uma linha de texto. Observação: a descrição ou a lista de legendas serão exibidos ao usuário, não ambos. |
Texto livre Tamanho de texto recomendado para cada subtítulo: máximo 50 caracteres |
ID de confirmação | Opcional | O ID de confirmação da reserva de aluguel de veículos. | Texto livre |
Preço - CurrentPrice | Obrigatório sob certas condições | O preço atual da reserva. Precisa ser fornecido se o preço promocional for informado. |
Texto livre |
Preço — StrikethroughPrice | Opcional | O preço original da reserva, que aparece com desconto no de ML pela IU. | 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 (texto muito longo) pode mostrar reticências) |
Especificações da imagem
Confira nesta tabela 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ários categorias. Isso mapeia o conteúdo com algumas das categorias predefinidas:
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
- Algumas entidades, como ArticleEntity e GenericFeaturedEntity, estão qualificado para usar qualquer uma das categorias de conteúdo. Para outras entidades, como Somente EventEntity, EventReservaEntity, PointOfInterestEntity um subconjunto dessas categorias está qualificado. Verificar a lista de categorias qualificado para um tipo de entidade antes de preencher a lista.
Usar o tipo específico de entidade para algumas categorias de conteúdo em vez de uma combinação das entidades genéricas e a ContentCategory:
- TYPE_FILTERS_AND_TV_SHOWS - Confira as entidades de Guia de integração do relógio antes de usar entidades genéricas.
- TYPE_BOOKS - Confira o EbookEntity antes de usar a entidades genéricas.
- TYPE_AUDIOBOOKS - Check-out AudiobookEntity antes usando entidades genéricas.
- TYPE_SHOPPING - Check-out ShoppingEntity antes usando entidades genéricas.
- TYPE_FOOD_AND_DRINK - Verificar entidades de guia de integração de alimentos antes de usar entidades genéricas.
O campo "ContentCategory" é opcional e deve ser deixado em branco se o o conteúdo não pertence a nenhuma das categorias mencionadas anteriormente.
Caso várias categorias de conteúdo sejam fornecidas, forneça-as na ordem de relevância para o conteúdo com a categoria de conteúdo mais relevante o primeiro da 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 motivos comerciais internos, nenhum dos clusters for publicado, recomendamos fortemente a atualização do status de publicação usando 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 fornecer insights sobre quando os dados são publicados em comparação com não.
- O Google pode usar os códigos de status para incentivar o usuário a realizar determinadas ações do aplicativo para que possam ver ou superar o conteúdo do aplicativo.
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 está conectado, o Google recomendamos publicar o card de login. Se, por algum motivo, não for possível para publicar o card de login, recomendamos chamar API updatePublishStatus com o código de status NOT_PUBLISHED_REQUIRES_SIGN_IN (em inglês)
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, toda a solicitação é 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, toda a solicitação é 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 | Observação |
---|---|
SERVICE_NOT_FOUND |
O serviço não está disponível no dispositivo. |
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). |
SERVICE_CALL_EXECUTION_FAILURE |
A execução da tarefa falhou devido a problemas de linha de execução. Nesse caso, ela pode ser repetida. |
SERVICE_CALL_PERMISSION_DENIED |
O autor da chamada não tem permissão para fazer a chamada de serviço. |
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). |
SERVICE_CALL_INTERNAL |
Há um erro no serviço. |
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
usandoContext.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)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_FEATURED)) // Register Continuation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION)) }
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)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continuation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION)); }
- Declare estaticamente uma implementação com a tag
<receiver>
no arquivoAndroidManifest.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: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
É recomendado para iniciar uma chamadapublishRecommendationClusters
ao receber essa intent.com.google.android.engage.action.PUBLISH_FEATURED
É recomendado inicie uma chamadapublishFeaturedCluster
ao receber essa intent.com.google.android.engage.action.PUBLISH_CONTINUATION
É recomendado inicie uma chamadapublishContinuationCluster
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
Contato engage-developers@google.com se houver quaisquer dúvidas durante o processo de integração.
Próximas etapas
Depois de concluir essa integração, as próximas etapas serão as seguintes:
- Enviar um e-mail para engage-developers@google.com e anexe o APK integrado que está 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 entrará em contato com você para notificar que você pode começar a publicar o APK atualizado e integrado para 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.