Google está compilando una plataforma integrada en el dispositivo que organiza las apps de los usuarios por verticales y que permite ofrecer una nueva experiencia envolvente para el descubrimiento y el consumo de contenido personalizado en las apps. Esta experiencia de pantalla completa brinda a los socios desarrolladores la oportunidad de mostrar su mejor contenido enriquecido en un canal dedicado fuera de su app.
Este documento contiene instrucciones para que los socios desarrolladores integren contenido nuevo, como reservas, eventos, alojamientos, lugares de interés, personas y otro contenido que podría no pertenecer a ninguna de estas categorías con el SDK de Engage para propagar esta nueva área de la plataforma.
Información detallada sobre la integración
Terminología
Esta integración incluye los siguientes tres tipos de clústeres: Recommendation, Featured y Continuation.
En los clústeres de Recommendation, se muestran sugerencias personalizadas de un socio desarrollador individual. Es una vista de la IU que contiene un grupo de recomendaciones del mismo socio desarrollador.
ArticleEntity: Es un objeto ArticleEntity que representa una recomendación basada en texto para contenido que es relevante para más de una categoría de contenido. El elemento ArticleEntity permite que los desarrolladores proporcionen una variedad de contenido de texto e imagen con más metadatos para articular la información a los usuarios en comparación con GenericFeaturedEntity. P. ej., contenido de marketing, fragmento de noticias
EventEntity: EventEntity representa un evento que ocurrirá en el futuro. La hora de inicio del evento es un dato fundamental que se debe transmitir a los usuarios.
LodgingEntity: LodgingEntity representa un alojamiento, como un hotel, un departamento o una casa de vacaciones para alquileres a corto y largo plazo.
StoreEntity: Representa una tienda, un restaurante, una cafetería, etc. Destaca el contenido en el que un lugar de comida o una tienda es la información fundamental que se debe transmitir a los usuarios.
PointOfInterestEntity: PointOfInterestEntity representa un lugar de interés, como una gasolinera, un lugar para eventos, un parque temático, un museo, una atracción turística, un sendero para caminatas, etcétera. Destaca el contenido en el que la ubicación es una información fundamental que se debe transmitir a los usuarios. No debe usarse para alojamientos, tiendas ni lugares de comida.
PersonEntity: PersonEntity representa a una persona. Las recomendaciones podrían ser destacar a una persona en categorías como salud y fitness, deportes, citas, etcétera.
El clúster de Continuation muestra contenido reproducido recientemente por los usuarios de varios socios desarrolladores en una sola agrupación de IU. Cada socio desarrollador podrá transmitir un máximo de 10 entidades en el clúster de Continuation.
Tu contenido de continuación puede tener la siguiente estructura:
ArticleEntity: Es un objeto ArticleEntity que representa una recomendación basada en texto para contenido que es relevante para más de una categoría de contenido. Esta entidad se puede usar para representar artículos de noticias sin terminar o cualquier otro contenido que el usuario desee seguir consumiendo desde donde lo dejó. P. ej., contenido de marketing, fragmento de noticias
RestaurantReservationEntity: RestaurantReservationEntity representa una reserva para un restaurante o una cafetería y ayuda a los usuarios a hacer un seguimiento de las reservas de restaurantes próximas o en curso.
EventReservationEntity: EventReservationEntity representa una reserva para un evento y ayuda a los usuarios a hacer un seguimiento de las reservas de eventos próximos o en curso. Los eventos pueden incluir, entre otros, los siguientes:
- Eventos deportivos, como la reserva para un partido de fútbol
- Eventos de videojuegos, como reservas para deportes electrónicos
- Eventos de entretenimiento, como reservas para películas en un cine, conciertos, obras de teatro y firmas de libros
- Reservas de viajes o lugares de interés, como visitas guiadas o entradas a museos
- Reservas de eventos sociales, seminarios o conferencias
- Reservas de sesiones de educación o capacitación
LodgingReservationEntity: LodgingEntityReservation representa una reserva de alojamiento de viaje y ayuda a los usuarios a hacer un seguimiento de las reservas de hoteles o alquileres de vacaciones próximas o en curso.
TransportationReservationEntity: TransportationReservationEntity representa una reserva de transporte en cualquier medio y ayuda a los usuarios a hacer un seguimiento de las reservas de vuelos, transbordadores, trenes, autobuses, viajes con conductor o cruceros futuros o en curso.
VehicleRentalReservationEntity: VehicleRentalReservationEntity representa una reserva de alquiler de vehículos y ayuda a los usuarios a hacer un seguimiento de las reservas de alquiler de vehículos próximas o en curso.
El clúster de Featured es una vista de la IU que muestra el hero elegido
GenericFeaturedEntity
de muchos socios desarrolladores en una agrupación de IU. Hay un solo clúster de Featured, que aparecerá cerca de la parte superior de la IU, con una ubicación de prioridad por sobre todos los clústeres de Recommendation. Cada socio desarrollador podrá transmitir una sola entidad de un tipo compatible en la sección Featured, y habrá muchas entidades (potencialmente de diferentes tipos) de varios desarrolladores de apps en el clúster de Featured.GenericFeaturedEntity: GenericFeaturedEntity difiere del elemento Recommendation en que el elemento Featured debe usarse para un solo contenido principal de los desarrolladores y debe representar el contenido más importante que será interesante y relevante para los usuarios.
Trabajo previo
Nivel de API mínimo: 19
Agrega la biblioteca com.google.android.engage:engage-core
a tu 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'
}
Resumen
El diseño se basa en una implementación de un servicio vinculado.
Los datos que un cliente puede publicar están sujetos a los siguientes límites para diferentes tipos de clústeres:
Tipo de clúster | Límites del clúster | Límites mínimos de entidades en un clúster | Límites máximos de entidades en un clúster |
---|---|---|---|
Clústeres de Recommendation | 5 como máximo | Al menos 5 | 25 como máximo (ArticleEntity , EventEntity , LodgingEntity , StoreEntity , PointOfInterestEntity o PersonEntity ) |
Clúster de Continuation | 1 como máximo | Al menos 1 | 10 como máximo (ArticleEntity , EventReservationEntity , LodgingReservationEntity , TransportationReservationEntity o VehicleRentalReservationEntity ) |
Clúster de Featured | 1 como máximo | Una como mínimo | 10 como máximo (GenericFeaturedEntity ) |
Paso 1: Proporciona los datos de la entidad
El SDK definió distintas entidades para representar cada tipo de elemento. Admitimos las siguientes entidades para las otras categorías:
GenericFeaturedEntity
ArticleEntity
EventEntity
LodgingEntity
StoreEntity
PointOfInterestEntity
PersonEntity
RestaurantReservationEntity
EventReservationEntity
LodgingReservationEntity
TransportationReservationEntity
VehicleRentalReservationEntity
En los gráficos siguientes, se describen los atributos y requisitos disponibles para cada tipo.
GenericFeaturedEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes |
URI |
Imágenes de pósteres | Obligatorio | Mostraremos solo 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es de 16:9. Nota: Si se proporciona una insignia, asegúrate de dejar un espacio seguro de 24 dps en la parte superior e inferior de la imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Título | Opcional | Es el título de la entidad. | Texto libre Tamaño de texto recomendado: 50 caracteres |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
Insignias | Opcional | Cada insignia es texto libre (máximo 15 caracteres) o una imagen pequeña. Tratamiento especial de UX sobre la imagen o el video, por ejemplo, como una insignia superpuesta en la imagen
|
|
Insignia: Texto | Opcional | Título de la insignia Nota: Se requiere texto o imagen para la insignia. |
Texto libre Tamaño de texto recomendado: 15 caracteres como máximo |
Insignia: Imagen | Opcional | Imagen pequeña Tratamiento especial de UX, por ejemplo, como una insignia superpuesta en la miniatura de la imagen o el video Nota: Es obligatorio incluir texto o una imagen para la insignia. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Categorías de contenido | Opcional | Describe la categoría del contenido de la entidad. | Lista de enums Consulta la sección Categorías de contenido para obtener orientación. |
ArticleEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes |
URI |
Título | Obligatorio | Es el título de la entidad. | Texto libre Tamaño de texto recomendado: 50 caracteres como máximo |
Imágenes de pósteres | Opcional | Mostraremos solo 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es 16:9. Nota: Se recomienda incluir una imagen. Si se proporciona una insignia, asegúrate de que haya un espacio seguro de 24 dp en la parte superior e inferior de la imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Fuente: título | Opcional | El nombre del autor, la organización o el denunciante | Texto libre Tamaño de texto recomendado: Menos de 25 caracteres |
Origen: Imagen | Opcional | Una imagen de la fuente, como el autor, la organización o el reportero | Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
Insignias | Opcional | Cada insignia puede ser texto libre (15 caracteres como máximo) o imagen pequeña. Tratamiento especial de UX sobre la imagen o el video, por ejemplo, como una insignia superpuesta en la imagen
|
|
Insignia: Texto | Opcional | Título de la insignia Nota: Se requiere texto o imagen para la insignia. |
Texto libre Tamaño de texto recomendado: 15 caracteres como máximo |
Insignia: Imagen | Opcional | Imagen pequeña Tratamiento especial de UX, por ejemplo, como una insignia superpuesta en la miniatura de la imagen o el video Nota: Se requiere texto o imagen para la insignia. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Hora de publicación del contenido | Opcional | Esta es la marca de tiempo de época, en milisegundos, en la que se publicó o actualizó el contenido en la app. | Marca de tiempo de época en milisegundos |
Tiempo de la participación más reciente | Condicionalmente obligatorio | Es la marca de tiempo de época en milisegundos de la última vez que el usuario interactuó con esta entidad. Nota: Este campo es obligatorio si esta entidad forma parte del clúster de Continuation. |
Marca de tiempo de época en milisegundos |
Porcentaje de progreso | Condicionalmente obligatorio | Es el porcentaje de todo el contenido consumido por el usuario hasta la fecha. Nota: Este campo es obligatorio si esta entidad forma parte del clúster de Continuation. |
Un valor int entre 0 y 100 inclusive. |
Categorías de contenido | Opcional | Describe la categoría del contenido de la entidad. | Lista de enumeraciones Consulta la sección Categorías de contenido para obtener orientación. |
EventEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Título | Obligatorio | Es el título de la entidad. | String Tamaño de texto recomendado: 50 caracteres como máximo |
Inicio | Obligatorio |
Es la marca de tiempo de época en la que se espera que comience el evento. Nota: Se representará en milisegundos. |
Marca de tiempo de época en milisegundos |
Modo de evento | Obligatorio | Un campo para indicar si el evento será virtual, presencial o ambos. |
Enum: VIRTUAL, IN_PERSON o HYBRID |
Imágenes de pósteres | Obligatorio | Solo mostraremos 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es de 16:9. Nota: Se recomienda incluir una imagen. Si se proporciona una insignia, asegúrate de que haya un espacio seguro de 24 dp en la parte superior e inferior de la imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Ubicación: país | Condicionalmente obligatorio | Es el país en el que se realiza el evento. Nota: Esto es obligatorio para los eventos que son IN_PERSON o HYBRID. |
Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: ciudad | Condicionalmente obligatorio | Es la ciudad en la que se realiza el evento. Nota: Esto es obligatorio para los eventos que son IN_PERSON o HYBRID. |
Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: dirección visible | Condicionalmente obligatorio | Es la dirección o el nombre del lugar donde se llevará a cabo el evento que se debe mostrar al usuario. Nota: Esto es obligatorio para los eventos que son IN_PERSON o HYBRID. |
Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Ubicación: dirección | Opcional | La dirección (si corresponde) de la ubicación en la que se llevará a cabo el evento | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Estado | Opcional | El estado o la provincia (si corresponde) en el que se realizará el evento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Código postal | Opcional | El código postal (si corresponde) de la ubicación en la que se llevará a cabo el evento | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: vecindario | Opcional | El vecindario (si corresponde) en el que se realizará el evento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Finalización | Opcional |
Es la marca de tiempo de época en la que se espera que finalice el evento. Nota: Se representará en milisegundos. |
Marca de tiempo de época en milisegundos |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
Insignias | Opcional |
Cada insignia es texto libre (máximo 15 caracteres) o una imagen pequeña. |
|
Insignia: Texto | Opcional | Título de la insignia Nota: Se requiere texto o imagen para la insignia. |
Texto libre Tamaño de texto recomendado: 15 caracteres como máximo |
Insignia: Imagen | Opcional | Imagen pequeña Tratamiento especial de UX, por ejemplo, como una insignia superpuesta en la miniatura de la imagen o el video Nota: Se requiere texto o imagen para la insignia. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Precio: CurrentPrice | Condicionalmente obligatorio |
Es el precio actual de la entrada o el pase para el evento. Se debe brindar si se proporciona el precio tachado. |
Texto libre |
Precio: StrikethroughPrice | Opcional | Es el precio original de la entrada o el pase para el evento. | Texto libre |
Solicitud de oferta de precio | Opcional | Es el texto destacado del precio para mostrar una promoción, un evento o un descuento para miembros, si está disponible. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Categorías de contenido | Opcional | Describe la categoría del contenido de la entidad. | Lista de enums aptas
Consulta la sección Categorías de contenido para obtener orientación. |
LodgingEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Título | Obligatorio | Es el título de la entidad. | String Tamaño de texto recomendado: 50 caracteres como máximo |
Imágenes de pósteres | Obligatorio |
Solo mostraremos 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es 16:9. Nota: Si se proporciona una insignia, asegúrate de dejar un espacio seguro de 24 dps en la parte superior e inferior de la imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Ubicación: País | Obligatorio | Es el país en el que se encuentra el alojamiento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Ciudad | Obligatorio | Indica la ciudad en la que se realizará el alojamiento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Dirección visible | Obligatorio | Es la dirección del alojamiento que se mostrará al usuario. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Ubicación: dirección | Opcional | La dirección (si corresponde) del alojamiento | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Estado | Opcional | Es el estado o la provincia (si corresponde) en el que se encuentra el alojamiento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Código postal | Opcional | El código postal (si corresponde) del alojamiento | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: vecindario | Opcional | El vecindario (si corresponde) del alojamiento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Insignias | Opcional |
Cada insignia es texto libre (máximo 15 caracteres) o una imagen pequeña. |
|
Insignia: Texto | Opcional | Título de la insignia Nota: Se requiere texto o imagen para la insignia. |
Texto libre Tamaño de texto recomendado: 15 caracteres como máximo |
Insignia: Imagen | Opcional | Imagen pequeña Tratamiento especial de UX, por ejemplo, como una insignia superpuesta en la miniatura de la imagen o el video Nota: Es obligatorio incluir texto o una imagen para la insignia. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
AvailabilityTimeWindow: Hora de inicio | Opcional | Es la marca de tiempo de época en milisegundos en la que se espera que el alojamiento esté disponible. | Marca de tiempo de época en milisegundos |
AvailabilityTimeWindow - End Time | Opcional | Es la marca de tiempo de época, en milisegundos, hasta la que se espera que el alojamiento esté abierto o disponible. | Marca de tiempo de época en milisegundos |
Calificación: Valor máximo | Opcional | Es el valor máximo de la escala de calificación. Se debe brindar si también se proporciona el valor actual de la calificación. |
Número >= 0.0 |
Calificación: Valor actual | Opcional | Es el valor actual de la escala de calificación. Se debe proporcionar si también se proporciona el valor máximo de la calificación. |
Número >= 0.0 |
Calificación: Cantidad | Opcional | Es el recuento de las calificaciones del alojamiento. Nota: Proporciona este campo si tu app controla cómo se muestra el recuento a los usuarios. Usa una cadena concisa. Por ejemplo, si el recuento es 1,000,000, considera usar una abreviatura como 1 M para que el recuento no se trunque en pantallas de tamaños más pequeños. |
String |
Calificación: Valor de recuento | Opcional | Es el recuento de calificaciones del alojamiento. Nota: Proporciona este campo si no manejas la lógica de abreviatura de pantalla por tu cuenta. Si tanto Count como Count Value están presentes, se muestra Count a los usuarios. |
Largo |
Precio: CurrentPrice | Condicionalmente obligatorio | Es el precio actual de la estadía. Se debe brindar si se proporciona el precio tachado. |
Texto libre |
Precio: StrikethroughPrice | Opcional | Es el precio original de la estadía, que aparece tachado en la IU. | Texto libre |
Solicitud de oferta de precio | Opcional | Es el texto destacado del precio para mostrar una promoción, un evento o un descuento para miembros, si está disponible. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
StoreEntity
El objeto StoreEntity
representa una tienda individual que los socios desarrolladores quieren publicar, como un restaurante o una tienda de comestibles.
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
Imágenes de pósteres | Obligatorio | Se debe proporcionar al menos una imagen. | Consulta la sección Especificaciones de imagen para obtener más información. |
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Título | Opcional | Es el nombre de la tienda. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Ubicación | Opcional | Es la ubicación de la tienda. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Texto destacado | Opcional | Es el texto destacado para mostrar una promoción, un evento o una actualización de la tienda, si está disponible. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Condiciones del texto destacado | Opcional | Son las condiciones para el texto destacado. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Descripción | Opcional | Es una descripción de la tienda. | Texto libre Tamaño de texto recomendado: Menos de 90 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Calificación: Valor máximo | Opcional | Es el valor máximo de la escala de calificación. Se debe brindar si también se proporciona el valor actual de la calificación. |
Número >= 0.0 |
Calificación: Valor actual | Opcional | Es el valor actual de la escala de calificación. Se debe proporcionar si también se proporciona el valor máximo de la calificación. |
Número >= 0.0 |
Calificación: Cantidad | Opcional | Es el recuento de las calificaciones del alojamiento. Nota: Proporciona este campo si tu app desea controlar cómo se muestra a los usuarios. Proporciona la cadena concisa que se puede mostrar al usuario. Por ejemplo, si el recuento es de 1,000,000, considera usar abreviaturas como 1M para que no se corte en tamaños de visualización más pequeños. |
String |
Calificación: Valor de recuento | Opcional | Es el recuento de las calificaciones del alojamiento. Nota: Proporciona este campo si no quieres controlar la lógica de la abreviatura de visualización por tu cuenta. Si están presentes Count y Count Value, usaremos Count para mostrarlos a los usuarios |
Largo |
PointOfInterestEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Título | Obligatorio | Es el título de la entidad. | String Tamaño de texto recomendado: 50 caracteres como máximo |
Imágenes de pósteres | Obligatorio | Solo mostraremos 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es de 16:9. Nota: Se recomienda incluir una imagen. Si se proporciona una insignia, asegúrate de que haya un espacio seguro de 24 dp en la parte superior e inferior de la imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Ubicación: País | Obligatorio | Es el país donde se produce el lugar de interés. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Ciudad | Obligatorio | Es la ciudad en la que se encuentra el lugar de interés. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Dirección visible | Obligatorio | Es la dirección del lugar de interés que se mostrará al usuario. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Ubicación: dirección | Opcional | Es la dirección (si corresponde) del lugar de interés. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Estado | Opcional | Es el estado o la provincia (si corresponde) en el que se encuentra el punto de interés. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Código postal | Opcional | El código postal (si corresponde) del lugar de interés | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: vecindario | Opcional | Es el vecindario (si corresponde) del lugar de interés. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
AvailabilityTimeWindow - Start Time | Opcional | Es la marca de tiempo de época, en milisegundos, en la que se espera que el lugar de interés esté abierto/disponible. | Marca de tiempo de época en milisegundos |
AvailabilityTimeWindow - End Time | Opcional | Es la marca de tiempo de época en milisegundos hasta la cual se espera que el punto de interés esté abierto o disponible. | Marca de tiempo de época en milisegundos |
Insignias | Opcional |
Cada insignia es texto libre (máximo 15 caracteres) o una imagen pequeña. |
|
Insignia: Texto | Opcional | Título de la insignia Nota: Se requiere texto o imagen para la insignia. |
Texto libre Tamaño de texto recomendado: 15 caracteres como máximo |
Insignia: Imagen | Opcional | Imagen pequeña Tratamiento especial de UX, por ejemplo, como una insignia superpuesta en la miniatura de la imagen o el video Nota: Se requiere texto o imagen para la insignia. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
Calificación: Valor máximo | Opcional | Es el valor máximo de la escala de calificación. Se debe brindar si también se proporciona el valor actual de la calificación. |
Número >= 0.0 |
Calificación: Valor actual | Opcional | Es el valor actual de la escala de calificación. Se debe proporcionar si también se proporciona el valor máximo de la calificación. |
Número >= 0.0 |
Calificación: Cantidad | Opcional | Es el recuento de calificaciones del lugar de interés. Nota: Proporciona este campo si tu app controla cómo se muestra el recuento a los usuarios. Usa una cadena concisa. Por ejemplo, si el recuento es 1,000,000, considera usar una abreviatura como 1 M para que el recuento no se trunque en pantallas de tamaños más pequeños. |
String |
Calificación: Valor de recuento | Opcional | Es el recuento de las calificaciones del lugar de interés. Nota: Proporciona este campo si no controlas la lógica de la abreviatura de visualización por tu cuenta. Si tanto Count como Count Value están presentes, Count se muestra a los usuarios. |
Largo |
Precio: CurrentPrice | Condicionalmente obligatorio |
Es el precio actual de las entradas o el pase de entrada del lugar de interés. Se debe proporcionar si se proporciona el precio tachado. |
Texto libre |
Precio: StrikethroughPrice | Opcional | Es el precio original de los boletos o pases de entrada para el lugar de interés. | Texto libre |
Solicitud de oferta de precio | Opcional | Es el texto destacado del precio para mostrar una promoción, un evento o un descuento para miembros, si está disponible. |
Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Categorías de contenido | Opcional | Describe la categoría del contenido de la entidad. | Lista de enums aptas
Consulta la sección Categorías de contenido para obtener orientación. |
PersonEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Perfil: Nombre | Obligatorio | Nombre de perfil, ID o identificador (p. ej., "Juan Pérez", "@EquipoPixel", etcétera) | String Tamaño de texto recomendado: 50 caracteres como máximo |
Perfil: Avatar | Obligatorio |
Foto de perfil o avatar del usuario. Nota: Debe ser una imagen cuadrada de 1:1. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Perfil: Texto adicional | Opcional | Texto libre, como el identificador del perfil | Texto libre Tamaño de texto recomendado: 15 caracteres como máximo |
Perfil: Imagen adicional | Opcional | Imagen pequeña, como una insignia de verificación. | Consulta la sección Especificaciones de imagen para obtener más información. |
Imagen del encabezado | Opcional | Mostraremos solo 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es 16:9. Nota: Se recomienda incluir una imagen. Si se proporciona una insignia, asegúrate de que haya un espacio seguro de 24 dp en la parte superior e inferior de la imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Popularidad: Cantidad | Opcional |
Indica la cantidad de seguidores o el valor de popularidad, por ejemplo, "3.7 M". Nota: Si se proporcionan Count y Count Value, se usará Count. |
String Tamaño de texto recomendado: 20 caracteres como máximo para la cantidad y la etiqueta combinados |
Popularidad: valor de recuento | Opcional | La cantidad de seguidores o el valor de popularidad. Nota: Proporciona el valor de recuento si tu app no desea controlar la lógica sobre cómo se debe optimizar un número grande para diferentes tamaños de visualización. Si se proporcionan Count y Count Value, se usa Count. |
Largo |
Popularidad: sello discográfico | Opcional | Indica cuál es la etiqueta de popularidad. Por ejemplo, "Me gusta". | String Tamaño de texto recomendado: 20 caracteres como máximo para la cantidad y la etiqueta combinados |
Popularidad: Visual | Opcional |
Indica para qué sirve la interacción. Por ejemplo, una imagen que muestra un ícono de “me gusta” o emojis. Se puede proporcionar más de 1 imagen, aunque es posible que no se muestren todas en todos los factores de forma. Nota: Debe ser una imagen cuadrada (1:1). |
Consulta la sección Especificaciones de imagen para obtener más información. |
Calificación: Valor máximo | Obligatorio | Es el valor máximo de la escala de calificación. Se debe brindar si también se proporciona el valor actual de la calificación. |
Número >= 0.0 |
Calificación: Valor actual | Obligatorio | Es el valor actual de la escala de calificación. Se debe proporcionar si también se proporciona el valor máximo de la calificación. |
Número >= 0.0 |
Calificación: Cantidad | Opcional | Es el recuento de las calificaciones de la entidad. Nota: Proporciona este campo si tu app desea controlar cómo se muestra a los usuarios. Proporciona la cadena concisa que se puede mostrar al usuario. Por ejemplo, si el recuento es de 1,000,000, considera usar abreviaturas como 1M para que no se corte en tamaños de visualización más pequeños. |
String |
Calificación: Valor de recuento | Opcional | Es el recuento de las calificaciones de la entidad. Nota: Proporciona este campo si no quieres controlar la lógica de la abreviatura de visualización por tu cuenta. Si están presentes Count y Count Value, usaremos Count para mostrarlos a los usuarios |
Largo |
Ubicación: país | Opcional | Es el país donde se encuentra la persona o donde se publica el contenido. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: ciudad | Opcional | Es la ciudad donde se encuentra la persona o donde presta servicios. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Dirección visible | Opcional | Se le mostrará al usuario la dirección donde se encuentra o se publica la persona. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Ubicación: dirección | Opcional | La dirección (si corresponde) donde se encuentra o trabaja la persona | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Estado | Opcional | El estado (si corresponde) en el que se encuentra o presta servicios la persona | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Código postal | Opcional | El código postal (si corresponde) donde se encuentra o presta servicios la persona | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: vecindario | Opcional | El vecindario (si corresponde) donde se encuentra o trabaja la persona | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Insignias | Opcional |
Cada insignia es texto libre (máximo 15 caracteres) o una imagen pequeña. |
|
Insignia: Texto | Opcional | Título de la insignia Nota: Se requiere texto o imagen para la insignia. |
Texto libre Tamaño de texto recomendado: 15 caracteres como máximo |
Insignia: Imagen | Opcional | Imagen pequeña Tratamiento especial de UX, por ejemplo, como una insignia superpuesta en la miniatura de la imagen o el video Nota: Es obligatorio incluir texto o una imagen para la insignia. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
Categorías de contenido | Opcional | Describe la categoría del contenido de la entidad. | Lista de enums aptas
Consulta la sección Categorías de contenido para obtener orientación. |
RestaurantReservationEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes |
URI |
Título | Obligatorio | Es el título de la entidad. | String Tamaño de texto recomendado: 50 caracteres como máximo |
Hora de inicio de la reserva | Obligatorio | Es la marca de tiempo de época en milisegundos cuando se espera que comience la reserva. | Marca de tiempo de época en milisegundos |
Ubicación: país | Obligatorio | Es el país en el que se encuentra el restaurante. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Ciudad | Obligatorio | Es la ciudad en la que se encuentra el restaurante. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Dirección visible | Obligatorio | Es la dirección del restaurante que se mostrará al usuario. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Ubicación: dirección | Opcional | Es la dirección (si corresponde) del restaurante. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Estado | Opcional | Indica el estado o la provincia (si corresponde) en que se encuentra el restaurante. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Código postal | Opcional | El código postal (si corresponde) del restaurante. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: vecindario | Opcional | El vecindario (si corresponde) del restaurante. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Imágenes de pósteres | Opcional | Mostraremos solo 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es de 16:9. | Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
Tamaño de la tabla | Opcional | La cantidad de personas en el grupo de la reserva | Número entero > 0 |
EventReservationEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Título | Obligatorio | Es el título de la entidad. | String Tamaño de texto recomendado: 50 caracteres como máximo |
Inicio | Obligatorio |
Es la marca de tiempo de época en la que se espera que comience el evento. Nota: Se representará en milisegundos. |
Marca de tiempo de época en milisegundos |
Modo de evento | Obligatorio | Un campo para indicar si el evento será virtual, presencial o ambos. |
Enum: VIRTUAL, IN_PERSON o HYBRID |
Ubicación: País | Condicionalmente obligatorio | Es el país en el que se realiza el evento. Nota: Esto es obligatorio para los eventos que son IN_PERSON o HYBRID. |
Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: ciudad | Condicionalmente obligatorio | Es la ciudad en la que se realiza el evento. Nota: Esto es obligatorio para los eventos que son IN_PERSON o HYBRID. |
Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: dirección visible | Condicionalmente obligatorio | Es la dirección o el nombre del lugar donde se llevará a cabo el evento que se debe mostrar al usuario. Nota: Esto es obligatorio para los eventos que son IN_PERSON o HYBRID. |
Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Ubicación: dirección | Opcional | La dirección (si corresponde) de la ubicación en la que se llevará a cabo el evento | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Estado | Opcional | El estado o la provincia (si corresponde) en el que se realizará el evento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Código postal | Opcional | El código postal (si corresponde) de la ubicación en la que se llevará a cabo el evento | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: vecindario | Opcional | El vecindario (si corresponde) en el que se realizará el evento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Imágenes de pósteres | Opcional | Mostraremos solo 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es 16:9. Nota: Se recomienda incluir una imagen. Si se proporciona una insignia, asegúrate de que haya un espacio seguro de 24 dp en la parte superior e inferior de la imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Finalización | Opcional |
Es la marca de tiempo de época en la que se espera que finalice el evento. Nota: Se representará en milisegundos. |
Marca de tiempo de época en milisegundos |
Proveedor de servicios: Nombre | Opcional |
Es el nombre del proveedor de servicios. Nota: El proveedor de servicios debe incluir texto o imagen. |
Texto libre. Por ejemplo, el nombre del organizador o la gira del evento |
Proveedor de servicios: Imagen | Opcional |
El logotipo o la imagen del proveedor de servicios. Nota: El proveedor de servicios debe incluir texto o imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
Insignias | Opcional |
Cada insignia es texto libre (máximo 15 caracteres) o una imagen pequeña. |
|
Insignia: Texto | Opcional | Título de la insignia Nota: Se requiere texto o imagen para la insignia. |
Texto libre Tamaño de texto recomendado: 15 caracteres como máximo |
Insignia: Imagen | Opcional | Imagen pequeña Tratamiento especial de UX, por ejemplo, como una insignia superpuesta en la miniatura de la imagen o el video Nota: Se requiere texto o imagen para la insignia. |
Consulta la sección Especificaciones de imagen para obtener más información. |
ID de reserva | Opcional | El ID de la reserva del evento. | Texto libre |
Precio - Precio actual | Condicionalmente obligatorio |
Es el precio actual de la entrada o el pase para el evento. Se debe brindar si se proporciona el precio tachado. |
Texto libre |
Precio: StrikethroughPrice | Opcional | Es el precio original de la entrada o el pase para el evento. | Texto libre |
Solicitud de oferta de precio | Opcional | Es el texto destacado del precio para mostrar una promoción, un evento o un descuento para miembros, si está disponible. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Calificación: Valor máximo | Opcional | Es el valor máximo de la escala de calificación. Se debe brindar si también se proporciona el valor actual de la calificación. |
Número >= 0.0 |
Calificación: Valor actual | Opcional | Es el valor actual de la escala de calificación. Se debe proporcionar si también se proporciona el valor máximo de la calificación. |
Número >= 0.0 |
Calificación: Cantidad | Opcional | Es el recuento de las calificaciones del evento. Nota: Proporciona este campo si tu app desea controlar cómo se muestra a los usuarios. Proporciona la cadena concisa que se puede mostrar al usuario. Por ejemplo, si el recuento es de 1,000,000, considera usar abreviaturas como 1M para que no se corte en tamaños de visualización más pequeños. |
String |
Calificación: Valor de recuento | Opcional | Es el recuento de las calificaciones del evento. Nota: Proporciona este campo si no quieres controlar la lógica de la abreviatura de visualización por tu cuenta. Si tanto Count como Count Value están presentes, usaremos Count para mostrarlo a los usuarios. |
Largo |
Categorías de contenido | Opcional | Describe la categoría del contenido de la entidad. | Lista de enums aptas
Consulta la sección Categorías de contenido para obtener orientación. |
LodgingReservationEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Título | Obligatorio | Es el título de la entidad. | Texto libre. Por ejemplo, “Tu estadía del 12 de dic.” Tamaño de texto recomendado: 50 caracteres como máximo |
Hora de entrada | Obligatorio | Es la marca de tiempo de época en milisegundos que representa la hora de registro para la reserva. | Marca de tiempo de época en milisegundos |
Hora de salida | Obligatorio | Es la marca de tiempo de época en milisegundos que representa la hora de salida de la reserva. | Marca de tiempo de época en milisegundos |
Ubicación: país | Obligatorio | Es el país en el que se encuentra el alojamiento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Ciudad | Obligatorio | Es la ciudad en la que se encuentra el alojamiento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Dirección visible | Obligatorio | Es la dirección del alojamiento que se mostrará al usuario. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Ubicación: dirección | Opcional | La dirección (si corresponde) del alojamiento | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Estado | Opcional | Es el estado o la provincia (si corresponde) en el que se encuentra el alojamiento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: Código postal | Opcional | El código postal (si corresponde) del alojamiento | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación: vecindario | Opcional | El vecindario (si corresponde) del alojamiento. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Imágenes de pósteres | Opcional |
Mostraremos solo 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es de 16:9. Nota: Si se proporciona una insignia, asegúrate de dejar un espacio seguro de 24 dp en la parte superior e inferior de la imagen. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
ID de reserva | Opcional | Es el ID de la reserva de alojamiento. | Texto libre |
Calificación: Valor máximo | Opcional | Es el valor máximo de la escala de calificación. Se debe brindar si también se proporciona el valor actual de la calificación. |
Número >= 0.0 |
Calificación: Valor actual | Opcional | Es el valor actual de la escala de calificación. Se debe proporcionar si también se proporciona el valor máximo de la calificación. |
Número >= 0.0 |
Calificación: Cantidad | Opcional | Es el recuento de las calificaciones del alojamiento. Nota: Proporciona este campo si tu app desea controlar cómo se muestra a los usuarios. Proporciona la cadena concisa que se puede mostrar al usuario. Por ejemplo, si el recuento es de 1,000,000, considera usar abreviaturas como 1M para que no se corte en tamaños de visualización más pequeños. |
String |
Calificación: Valor de recuento | Opcional | Es el recuento de las calificaciones del alojamiento. Nota: Proporciona este campo si no quieres controlar la lógica de la abreviatura de visualización por tu cuenta. Si están presentes Count y Count Value, usaremos Count para mostrarlos a los usuarios |
Largo |
Precio: CurrentPrice | Condicionalmente obligatorio | Es el precio actual de la estadía. Se debe brindar si se proporciona el precio tachado. |
Texto libre |
Precio: StrikethroughPrice | Opcional | Es el precio original de la estadía, que aparece tachado en la IU. | Texto libre |
Solicitud de oferta de precio | Opcional | Es el texto destacado del precio para mostrar una promoción, un evento o un descuento para miembros, si está disponible. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
TransportationReservationEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Título | Obligatorio | Es el título de la entidad. | Texto libre. Por ejemplo, "SFO a SAN" Tamaño de texto recomendado: 50 caracteres como máximo |
Tipo de transporte | Obligatorio | Es el modo o tipo de transporte de la reserva. | Enumeración: Vuelo, TRAIN, BUS o FERRY |
Hora de partida | Obligatorio | Es la marca de tiempo de época en milisegundos que representa la hora de salida. | Marca de tiempo de época en milisegundos |
Hora de llegada | Obligatorio | Es la marca de tiempo de época en milisegundos que representa la hora de llegada. | Marca de tiempo de época en milisegundos |
Ubicación de salida: País | Opcional | Es el país de salida. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de salida: ciudad | Opcional | La ciudad de salida. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Ubicación de salida: dirección visible | Opcional | La ubicación de salida que se mostrará al usuario. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de salida: dirección | Opcional | La dirección (si corresponde) de la ubicación de salida | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de salida: Estado | Opcional | El estado o la provincia (si corresponde) de la ubicación de salida | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de salida: Código postal | Opcional | El código postal (si corresponde) de la ubicación de salida | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de salida: vecindario | Opcional | El vecindario (si corresponde) de la ubicación de salida. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
País de la ubicación de llegada | Opcional | El país de destino | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de destino: ciudad | Opcional | La ciudad de destino | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de llegada: dirección visible | Opcional | Es la ubicación de destino que se mostrará al usuario. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de llegada: dirección | Opcional | La dirección (si corresponde) de la ubicación de destino | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de llegada: Estado | Opcional | El estado o la provincia (si corresponde) de la ubicación de destino | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de destino: Código postal | Opcional | El código postal (si corresponde) de la ubicación de destino | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Ubicación de llegada: vecindario | Opcional | El vecindario (si corresponde) de la ubicación de llegada. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Proveedor de servicios: Nombre | Opcional |
Es el nombre del proveedor de servicios. Nota: El proveedor de servicios debe incluir texto o imagen. |
Texto libre. Por ejemplo, Nombre de la aerolínea |
Proveedor de servicios: imagen | Opcional |
El logotipo o la imagen del proveedor de servicios. Nota: Se requiere texto o imagen para el proveedor de servicios. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Imágenes de pósteres | Opcional |
Solo mostraremos 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es 16:9. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
ID de reserva | Opcional | Es el ID de la reserva de transporte. | Texto libre |
Precio - Precio actual | Condicionalmente obligatorio | Es el precio actual de la reserva. Se debe brindar si se proporciona el precio tachado. |
Texto libre |
Precio: StrikethroughPrice | Opcional | Es el precio original de la reserva, que aparece tachado en la IU. | Texto libre |
Solicitud de oferta de precio | Opcional | Es el texto destacado del precio para mostrar una promoción, un evento o un descuento para miembros, si está disponible. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Número de transporte | Obligatorio | El número de vuelo, autobús, tren o ferry/crucero. | Texto libre |
Hora de embarque | Obligatorio | La marca de tiempo de época que representa la hora de embarque de la reserva (si corresponde) | Marca de tiempo de época en milisegundos |
VehicleRentalReservationEntity
Atributo | Requisito | Descripción | Formato |
---|---|---|---|
URI de acción | Obligatorio |
Vínculo directo a la entidad en la app del proveedor. Nota: Puedes usar vínculos directos para la atribución. Consulta estas Preguntas frecuentes. |
URI |
Título | Obligatorio | Es el título de la entidad. | Texto libre. Por ejemplo, "Buenos Aires" Tamaño de texto recomendado: 50 caracteres como máximo |
Hora de retiro | Obligatorio | Es la marca de tiempo de época que representa la hora de partida de la reserva. | Marca de tiempo de época en milisegundos |
Hora de devolución | Opcional | La marca de tiempo de época que representa la hora de salida de la reserva. | Marca de tiempo de época en milisegundos |
Dirección de retiro - País | Opcional | Es el país de la ubicación de retiro. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Dirección de retiro: ciudad | Opcional | Es la ciudad de la ubicación de retiro. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de retiro: Dirección visible | Opcional | Es la ubicación de partida que se mostrará al usuario. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de retiro: dirección | Opcional | La dirección (si corresponde) de la ubicación de retiro | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de retiro: Estado | Opcional | El estado o la provincia (si corresponde) de la ubicación de retiro. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de retiro: Código postal | Opcional | El código postal (si corresponde) de la ubicación de retiro | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de retiro: vecindario | Opcional | El vecindario (si corresponde) de la ubicación de partida. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de devolución: País | Opcional | Es el país de la ubicación de devolución. | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Dirección de devolución: Ciudad | Opcional | La ciudad de la ubicación de devolución | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de devolución: Dirección visible | Opcional | Es la ubicación de devolución que se mostrará al usuario. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de devolución: dirección | Opcional | La dirección (si corresponde) de la ubicación de devolución | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de devolución: Estado | Opcional | Es el estado o la provincia (si corresponde) de la ubicación de devolución. | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de devolución: Código postal | Opcional | El código postal (si corresponde) de la ubicación de devolución | Texto libre Tamaño de texto recomendado: máx., ~20 caracteres |
Dirección de devolución: vecindario | Opcional | Es el vecindario de la ubicación de devolución (si corresponde). | Texto libre Tamaño de texto recomendado: 20 caracteres como máximo |
Proveedor de servicios: Nombre | Opcional |
Es el nombre del proveedor de servicios. Nota: El proveedor de servicios debe incluir texto o imagen. |
Texto libre. Por ejemplo, "Alquiler de automóviles en Avis" |
Proveedor de servicios: imagen | Opcional |
El logotipo o la imagen del proveedor de servicios. Nota: Se requiere texto o imagen para el proveedor de servicios. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Imágenes de pósteres | Opcional |
Mostraremos solo 1 imagen cuando se proporcionen varias. La relación de aspecto recomendada es de 16:9. |
Consulta la sección Especificaciones de imagen para obtener más información. |
Descripción | Opcional | Un solo párrafo de texto para describir la entidad Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado: 180 caracteres |
Lista de subtítulos | Opcional | Hasta 3 subtítulos, cada uno con una sola línea de texto. Nota: Se le mostrará al usuario la descripción o la lista de subtítulos, pero no ambas. |
Texto libre Tamaño de texto recomendado para cada subtítulo: 50 caracteres como máximo |
ID de confirmación | Opcional | El ID de confirmación de la reserva de alquiler del vehículo. | Texto libre |
Precio - Precio actual | Condicionalmente obligatorio | Es el precio actual de la reserva. Se debe brindar si se proporciona el precio tachado. |
Texto libre |
Precio: StrikethroughPrice | Opcional | Es el precio original de la reserva, que aparece tachado en la IU. | Texto libre |
Solicitud de oferta de precio | Opcional | Es el texto destacado del precio para mostrar una promoción, un evento o un descuento para miembros, si está disponible. | Texto libre Tamaño de texto recomendado: Menos de 45 caracteres (el texto demasiado largo puede mostrar puntos suspensivos) |
Especificaciones de imagen
En esta tabla, se indican las especificaciones obligatorias para los recursos de imagen:
Relación de aspecto | Píxeles mínimos | Píxeles recomendados |
---|---|---|
Formato cuadrado (1 x 1) Preferido |
300 x 300 | 1,200 x 1,200 |
Formato horizontal (1.91 x 1) | 600 x 314 | 1,200 x 628 |
Formato vertical (4 x 5) | 480 x 600 | 960 x 1,200 |
Las imágenes deben estar alojadas en CDN públicas para que Google pueda acceder a ellas.
Formatos de archivo
PNG, JPG, GIF estático, WebP
Tamaño máximo de los archivos
5120 KB
Recomendaciones adicionales
- Área segura para la imagen: Coloca el contenido importante en el 80% central de la imagen.
- Usa un fondo transparente para que la imagen se muestre correctamente cuando se configure el tema oscuro o claro.
Categoría de contenido
La categoría de contenido permite que las apps publiquen contenido que pertenece a varias categorías. Esto asigna el contenido con algunas de las categorías predefinidas, a saber:
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
Las imágenes deben estar alojadas en CDN públicas para que Google pueda acceder a ellas.
Lineamientos para usar las categorías de contenido
- Algunas entidades, como ArticleEntity y GenericFeaturedEntity, son aptas para usar cualquiera de las categorías de contenido. En el caso de otras entidades, como EventEntity, EventReservationEntity y PointOfInterestEntity, solo un subconjunto de estas categorías es apto. Verifica la lista de categorías aptas para un tipo de entidad antes de propagar la lista.
Usa el tipo de entidad específico para algunas categorías de contenido en lugar de una combinación de las entidades genéricas y ContentCategory:
- TYPE_MOVIES_AND_TV_SHOWS: Consulta las entidades de la Guía de integración de Watch antes de usar las entidades genéricas.
- TYPE_BOOKS: Consulta EbookEntity antes de usar las entidades genéricas.
- TYPE_AUDIOBOOKS: Consulta AudiobookEntity antes de usar las entidades genéricas.
- TYPE_SHOPPING: Consulta ShoppingEntity antes de usar las entidades genéricas.
- TYPE_FOOD_AND_DRINK: Consulta las entidades de la Guía de integración de alimentos antes de usar las entidades genéricas.
El campo ContentCategory es opcional y se debe dejar en blanco si el contenido no pertenece a ninguna de las categorías mencionadas anteriormente.
En caso de que se proporcionen varias categorías de contenido, inclúyelas en el orden de relevancia para el contenido, y coloca la categoría más relevante en primer lugar en la lista.
Paso 2: Proporciona los datos de los clústeres
Se recomienda que el trabajo de publicación de contenido se ejecute en segundo plano (por ejemplo, con WorkManager) y se programe con frecuencia o en eventos (por ejemplo, cada vez que el usuario abre la app o cuando acaba de agregar algo a su carrito).
AppEngagePublishClient
es responsable de publicar los clústeres.
Hay cinco APIs para publicar clústeres en el cliente:
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
deleteUserManagementCluster
deleteClusters
isServiceAvailable
Esta API se usa para verificar si el servicio está disponible para la integración y si el contenido se puede presentar en el 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
Esta API se usa para publicar una 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());
Cuando el servicio recibe la solicitud, se realizan las siguientes acciones en una transacción:
- Se quitan los datos existentes de
RecommendationCluster
del socio desarrollador. - Los datos de la solicitud se analizan y se almacenan en el clúster de Recommendation actualizado.
En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
publishFeaturedCluster
Esta API se usa para publicar una 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());
Cuando el servicio recibe la solicitud, se realizan las siguientes acciones en una transacción:
- Se quitan los datos existentes de
FeaturedCluster
del socio desarrollador. - Los datos de la solicitud se analizan y se almacenan en el clúster de Featured actualizado.
En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
publishContinuationCluster
Esta API se usa para publicar un 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());
Cuando el servicio recibe la solicitud, se realizan las siguientes acciones en una transacción:
- Se quitan los datos existentes de
ContinuationCluster
del socio desarrollador. - Los datos de la solicitud se analizan y se almacenan en el clúster de Continuation actualizado.
En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
publishUserAccountManagementRequest
Esta API se usa para publicar una tarjeta de acceso. La acción de acceso dirige a los usuarios a la página de acceso de la app para que esta pueda publicar contenido (o proporcionar contenido más personalizado).
Los siguientes metadatos forman parte de la tarjeta de acceso:
Atributo | Requisito | Descripción |
---|---|---|
URI de acción | Obligatorio | Vínculo directo a la acción (p. ej., navega a la página de acceso de la app) |
Imagen | Opcional: En caso de que no se proporcione el título, debes brindar uno. |
Imagen que se muestra en la tarjeta Imágenes con una relación de aspecto de 16 × 9, con una resolución de 1264 × 712 |
Título | Opcional: En caso de que no se proporcione la imagen, debes brindar una. | Título en la tarjeta |
Texto de acción | Opcional | Texto que se muestra en la CTA (p. ej., Acceder) |
Subtítulo | Opcional | Subtítulo opcional en la tarjeta |
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());
Cuando el servicio recibe la solicitud, se realizan las siguientes acciones en una transacción:
- Se quitan los datos existentes de
UserAccountManagementCluster
del socio desarrollador. - Los datos de la solicitud se analizan y se almacenan en el clúster de UserAccountManagementCluster actualizado.
En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
updatePublishStatus
Si, por algún motivo empresarial interno, no se publica ninguno de los clústeres, te recomendamos que actualices el estado de publicación a través de la API de updatePublishStatus. A continuación, explicamos por qué es importante:
- Proporcionar el estado en todas las situaciones, incluso cuando el contenido está publicado (STATUS == PUBLISHED), es fundamental para propagar los paneles que usan este estado explícito para transmitir el estado y otras métricas de tu integración.
- Si no se publica contenido pero el estado de integración no está roto (STATUS == NOT_PUBLISHED), Google puede evitar activar alertas en los paneles de estado de la app. Confirma que el contenido no se publicó debido a una situación prevista desde el punto de vista del proveedor.
- Ayuda a los desarrolladores a proporcionar estadísticas sobre cuándo se publican los datos y cuándo no.
- Google puede usar los códigos de estado para sugerir al usuario que realice determinadas acciones en la app de modo que pueda ver el contenido de la app o superarlo.
La lista de códigos de estado de publicación aptos es la siguiente:
// 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
Si el contenido no se publica debido a que un usuario no accedió, Google te recomienda publicar la tarjeta de acceso. Si, por algún motivo, los proveedores no pueden publicar la tarjeta de acceso, recomendamos que llames a la API de updatePublishStatus con el código de estado 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
Esta API se usa para borrar el contenido de los clústeres de Recommendation.
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
Cuando el servicio recibe la solicitud, quita los datos existentes de los clústeres de Recommendation. En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
deleteFeaturedCluster
Esta API se usa para borrar el contenido del clúster de Featured.
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
Cuando el servicio recibe la solicitud, quita los datos existentes del clúster de Featured. En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
deleteContinuationCluster
Esta API se usa para borrar el contenido del clúster de Continuation.
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
Cuando el servicio recibe la solicitud, quita los datos existentes del clúster de Continuation. En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
deleteUserManagementCluster
Esta API se usa para borrar el contenido del clúster de UserAccountManagement.
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
Cuando el servicio recibe la solicitud, quita los datos existentes del clúster de UserAccountManagement. En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
deleteClusters
Esta API se usa para borrar el contenido de un tipo de clúster determinado.
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());
Cuando el servicio recibe la solicitud, quita los datos existentes de todos los clústeres que coincidan con los tipos de clúster especificados. Los clientes pueden optar por pasar uno o varios tipos de clústeres. En caso de error, se rechaza la solicitud completa y se mantiene el estado existente.
Manejo de errores
Te recomendamos que escuches el resultado de la tarea de las APIs de publicación, de manera que se pueda realizar una acción de seguimiento para recuperar y volver a enviar una tarea con éxito.
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 } } } });
El error se muestra como una AppEngageException
con la causa incluida como un código de error.
Código de error | Nombre del error | Nota |
---|---|---|
1 |
SERVICE_NOT_FOUND |
El servicio no está disponible en el dispositivo determinado. |
2 |
SERVICE_NOT_AVAILABLE |
El servicio está disponible en el dispositivo determinado, pero no en el momento de la llamada (por ejemplo, está inhabilitado explícitamente). |
3 |
SERVICE_CALL_EXECUTION_FAILURE |
No se pudo ejecutar la tarea debido a problemas con los subprocesos. En este caso, se puede volver a intentar. |
4 |
SERVICE_CALL_PERMISSION_DENIED |
El llamador no tiene permiso para realizar la llamada de servicio. |
5 |
SERVICE_CALL_INVALID_ARGUMENT |
La solicitud contiene datos no válidos (por ejemplo, una cantidad de clústeres mayor que la permitida). |
6 |
SERVICE_CALL_INTERNAL |
Hay un error en el servicio. |
7 |
SERVICE_CALL_RESOURCE_EXHAUSTED |
La llamada de servicio se realiza con demasiada frecuencia. |
Paso 3: Controla los intents de transmisión
Además de realizar llamadas a las APIs de publicación de contenido a través de un trabajo, también se requiere configurar un BroadcastReceiver
para recibir la solicitud de publicación de contenido.
El objetivo de los intents de transmisión es principalmente reactivar apps y forzar la sincronización de datos. Los intents de transmisión no están diseñados para enviarse con mucha frecuencia. Solo se activan cuando el servicio de Engage determina que el contenido puede estar inactivo (por ejemplo, si es de hace una semana). De esa manera, será más probable que el usuario tenga una experiencia de contenido actualizada, incluso si la aplicación no se ejecutó durante un período prolongado.
El BroadcastReceiver
debe configurarse de las siguientes dos maneras:
- Registra de forma dinámica una instancia de la clase
BroadcastReceiver
conContext.registerReceiver()
. Esto permite la comunicación desde aplicaciones que aún están activas en la memoria.
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)); }
- Declara de forma estática una implementación con la etiqueta
<receiver>
en tu archivoAndroidManifest.xml
. Esto permite que la aplicación reciba intents de transmisión cuando no está en ejecución y que la aplicación publique el contenido.
<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>
El servicio envía los siguientes intents:
com.google.android.engage.action.PUBLISH_RECOMMENDATION
Te recomendamos que inicies una llamada apublishRecommendationClusters
cuando recibas este intent.com.google.android.engage.action.PUBLISH_FEATURED
Te recomendamos que inicies una llamada apublishFeaturedCluster
cuando recibas este intent.com.google.android.engage.action.PUBLISH_CONTINUATION
Te recomendamos que inicies una llamada apublishContinuationCluster
cuando recibas este intent.
Flujo de trabajo de integración
Si deseas obtener una guía paso a paso para verificar la integración una vez que esta se complete, consulta Flujo de trabajo de integración para desarrolladores de Engage.
Preguntas frecuentes
Consulta Preguntas frecuentes sobre el SDK de Engage para ver preguntas frecuentes.
Contacto
Comunícate con engage-developers@google.com si tienes preguntas durante el proceso de integración.
Próximos pasos
Después de completar esta integración, sigue estos pasos:
- Envía un correo electrónico a engage-developers@google.com y adjunta el APK integrado que está listo para que Google lo pruebe.
- Google realiza una verificación y revisiones internas para asegurarse de que la integración funcione según lo previsto. Si se necesitan cambios, Google se comunica contigo con los detalles necesarios.
- Cuando se completen las pruebas y no se necesiten cambios, Google se comunicará contigo para notificarte que puedes comenzar a publicar el APK integrado y actualizado en Play Store.
- Después de que Google confirme que tu APK actualizado se publicó en Play Store, los clústeres de Recommendation, Featured y Continuation se pueden publicar y estar visibles para los usuarios.