Integra la función Mirar a continuación con la API de REST

book_path: /distribute/other-docs/_book.yaml project_path: /distribute/other-docs/_project.yaml

El SDK de Engage ofrece una API de REST para proporcionar una experiencia coherente de seguir mirando en plataformas que no son de Android, como iOS y Roku TV. La API permite a los desarrolladores actualizar el estado de "Seguir mirando" para los usuarios que habilitaron la función desde plataformas que no son de Android.

Requisitos previos

  • Primero debes completar la integración basada en el SDK de Engage en el dispositivo. Este paso fundamental establece la asociación necesaria entre el ID de usuario de Google y el AccountProfile de tu app.
  • Acceso y autenticación de la API: Para ver y habilitar la API en tu proyecto de Google Cloud, debes completar un proceso de lista de entidades permitidas. Todas las solicitudes a la API requieren autenticación.

Obtener acceso

Para acceder a la API y habilitarla en tu consola de Google Cloud, tu cuenta debe estar inscrita.

  1. El ID de cliente de Google Workspace debería estar disponible. Si no está disponible, es posible que debas configurar un espacio de Google Workspace y las Cuentas de Google que quieras usar para llamar a la API.
  2. Configura una cuenta con la consola de Google Cloud usando un correo electrónico asociado a Google Workspace.
  3. Crea un proyecto nuevo.
  4. Crea una cuenta de servicio para la autenticación de la API. Una vez que crees la cuenta de servicio, tendrás dos elementos:
    • ID de una cuenta de servicio
    • Un archivo JSON con la clave de tu cuenta de servicio Mantén este archivo seguro. La necesitarás para autenticar tu cliente en la API más adelante.
  5. Ahora, Workspace y las Cuentas de Google asociadas pueden usar las APIs de REST. Una vez que se propague el cambio, recibirás una notificación para saber si la API está lista para que la llamen tus cuentas de servicio.
  6. Sigue estos pasos para prepararte para realizar una llamada a la API delegada.

Publica el clúster de Continuation

Para publicar los datos de descubrimiento de videos, realiza una solicitud POST a la API de publishContinuationCluster con la siguiente sintaxis.

https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/publishContinuationCluster

En la que:

  • package_name: Nombre del paquete del proveedor de contenido multimedia
  • accountId: Es el ID único de la cuenta del usuario en tu sistema. Debe coincidir con el accountId que se usa en la ruta de acceso en el dispositivo.
  • profileId: Es el ID único del perfil del usuario dentro de la cuenta en tu sistema. Debe coincidir con el profileId que se usa en la ruta de acceso del dispositivo.

La URL de la cuenta sin perfil es la siguiente:

https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/publishContinuationCluster

La carga útil de la solicitud se representa en el campo entities. entities representa una lista de entidades de contenido, que pueden ser MovieEntity o TVEpisodeEntity. Este es un campo obligatorio.

Cuerpo de la solicitud

Campo

Tipo

Obligatorio

Descripción

entidades

Lista de objetos MediaEntity

Es una lista de entidades de contenido con un máximo de 5. Solo se conservarán los cinco primeros y se descartarán los demás. Se permite una lista vacía para indicar que el usuario terminó de mirar todas las entidades.

El campo entities contiene movieEntity y tvEpisodeEntity individuales.

Campo

Tipo

Obligatorio

Descripción

movieEntity

MovieEntity

Es un objeto que representa una película dentro de ContinuationCluster.

tvEpisodeEntity

TvEpisodeEntity

Es un objeto que representa un episodio de TV dentro de ContinuationCluster.

Cada objeto del array de entidades debe ser uno de los tipos de MediaEntity disponibles, es decir, MovieEntity y TvEpisodeEntity, junto con campos comunes y específicos del tipo.

En el siguiente fragmento de código, se muestra la carga útil del cuerpo de la solicitud para la API de publishContinuationCluster.

{
  "entities": [
    {
      "movieEntity": {
        "watch_next_type": "WATCH_NEXT_TYPE_CONTINUE",
        "name": "Movie1",
        "platform_specific_playback_uris": [
          "https://www.example.com/entity_uri_for_android",
          "https://www.example.com/entity_uri_for_iOS"
        ],
        "poster_images": [
          "http://www.example.com/movie1_img1.png",
          "http://www.example.com/movie1_imag2.png"
        ],
        "last_engagement_time_millis": 864600000,
        "duration_millis": 5400000,
        "last_play_back_position_time_millis": 3241111
      }
    },
    {
      "tvEpisodeEntity": {
        "watch_next_type": "WATCH_NEXT_TYPE_CONTINUE",
        "name": "TV SERIES EPISODE 1",
        "platform_specific_playback_uris": [
          "https://www.example.com/entity_uri_for_android",
          "https://www.example.com/entity_uri_for_iOS"
        ],
        "poster_images": [
          "http://www.example.com/episode1_img1.png",
          "http://www.example.com/episode1_imag2.png"
        ],
        "last_engagement_time_millis": 864600000,
        "duration_millis": 1800000,
        "last_play_back_position_time_millis": 2141231,
        "episode_display_number": "1",
        "season_number": "1",
        "show_title": "title"
      }
    }
  ]
}

Borra los datos de descubrimiento de videos

Usa la API de clearClusters para quitar los datos de descubrimiento de videos.

Para borrar los datos del clúster de continuación, envía una solicitud POST a la API de clearClusters con la siguiente sintaxis.

https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/clearClusters

En la que:

  • package_name: Es el nombre del paquete del proveedor de contenido multimedia.
  • accountId: Es el ID único de la cuenta del usuario en tu sistema. Debe coincidir con el accountId que se usa en la ruta de acceso en el dispositivo.
  • profileId: Es el ID único del perfil del usuario dentro de la cuenta en tu sistema. Debe coincidir con el profileId que se usa en la ruta de acceso del dispositivo.

La carga útil de la API de clearClusters contiene solo un campo, reason, que incluye un DeleteReason que especifica el motivo de la eliminación de datos.

{
  "reason": "DELETE_REASON_LOSS_OF_CONSENT"
}

Prueba

Después de publicar los datos correctamente, usa una cuenta de prueba de usuario para verificar que el contenido esperado aparezca en la fila "Seguir mirando" en las plataformas de Google objetivo, como Google TV y las apps para dispositivos móviles de Google TV para Android y iOS.

En las pruebas, permite una demora de propagación razonable de unos minutos y cumple con los requisitos de visualización, como mirar parte de una película o terminar un episodio. Consulta los lineamientos de Ver a continuación para desarrolladores de apps para obtener más detalles.