Integrar o recurso "Continuar assistindo" usando a API REST

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

O SDK Engage oferece uma API REST para proporcionar uma experiência consistente de continuar assistindo em plataformas que não são Android, como iOS e Roku TV. A API permite que os desenvolvedores atualizem o status "Continuar assistindo" para usuários que ativaram a opção em plataformas que não são Android.

Pré-requisitos

  • Primeiro, conclua a integração no dispositivo baseada no SDK do Engage. Essa etapa essencial estabelece a associação necessária entre o ID do usuário do Google e o AccountProfile do seu app.
  • Acesso e autenticação da API: para ver e ativar a API no seu projeto do Google Cloud, você precisa passar por um processo de lista de permissões. Todas as solicitações de API exigem autenticação.

Receber acesso

Para ter acesso e ativar a API no console do Google Cloud, sua conta precisa estar inscrita.

  1. O ID de cliente do Google Workspace precisa estar disponível. Se não estiver disponível, talvez seja necessário configurar um Google Workspace e as Contas do Google que você quer usar para chamar a API.
  2. Configure uma conta no console do Google Cloud usando um e-mail associado ao Google Workspace.
  3. Crie um projeto.
  4. Crie uma conta de serviço para autenticação de API. Depois de criar a conta de serviço, você terá dois itens:
    • Um ID de conta de serviço.
    • Um arquivo JSON com a chave da sua conta de serviço. Mantenha esse arquivo em segurança. Você vai precisar dele para autenticar seu cliente na API mais tarde.
  5. O Workspace e as Contas do Google associadas agora podem usar APIs REST. Quando a mudança for propagada, você vai receber uma notificação informando se a API está pronta para ser chamada pelas suas contas de serviço.
  6. Siga estas etapas para se preparar para fazer uma chamada de API delegada.

Publicar cluster de continuação

Para publicar os dados de descoberta de vídeo, faça uma solicitação POST para a API publishContinuationCluster usando a seguinte sintaxe.

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

Em que:

  • package_name: o nome do pacote do provedor de mídia.
  • accountId: o ID exclusivo da conta do usuário no seu sistema. Ele precisa corresponder ao accountId usado no caminho do dispositivo.
  • profileId: o ID exclusivo do perfil do usuário na conta do seu sistema. Ele precisa corresponder ao profileId usado no caminho do dispositivo.

O URL da conta sem perfil é:

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

O payload da solicitação é representado no campo entities. entities representa uma lista de entidades de conteúdo, que podem ser MovieEntity ou TVEpisodeEntity. Este campo é obrigatório.

Corpo da solicitação

Campo

Tipo

Obrigatório

Descrição

entidades

Lista de objetos MediaEntity

Sim

Lista de entidades de conteúdo com um máximo de cinco. Apenas os cinco primeiros serão mantidos, e o restante será descartado. Uma lista vazia pode indicar que o usuário terminou de assistir todas as entidades.

O campo entities contém movieEntity e tvEpisodeEntity individuais.

Campo

Tipo

Obrigatório

Descrição

movieEntity

MovieEntity

Sim

Um objeto que representa um filme no ContinuationCluster.

tvEpisodeEntity

TvEpisodeEntity

Sim

Um objeto que representa um episódio de TV no ContinuationCluster.

Cada objeto na matriz de entidades precisa ser um dos tipos MediaEntity disponíveis, ou seja, MovieEntity e TvEpisodeEntity, além de campos comuns e específicos do tipo.

O snippet de código a seguir mostra a carga útil do corpo da solicitação para a API 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"
      }
    }
  ]
}

Excluir os dados de descoberta de vídeo

Use a API clearClusters para remover os dados de descoberta de vídeo.

Para excluir os dados do cluster de continuação, faça uma solicitação POST para a API clearClusters usando a seguinte sintaxe.

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

Em que:

  • package_name: o nome do pacote do provedor de mídia.
  • accountId: o ID exclusivo da conta do usuário no seu sistema. Ele precisa corresponder ao accountId usado no caminho do dispositivo.
  • profileId: o ID exclusivo do perfil do usuário na conta do seu sistema. Ele precisa corresponder ao profileId usado no caminho do dispositivo.

O payload da API clearClusters contém apenas um campo, reason, que contém um DeleteReason que especifica o motivo da remoção de dados.

{
  "reason": "DELETE_REASON_LOSS_OF_CONSENT"
}

Teste

Depois de postar os dados, use uma conta de teste de usuário para verificar se o conteúdo esperado aparece na linha "Continuar assistindo" nas plataformas do Google como o Google TV e os apps móveis do Google TV para Android e iOS.

Durante o teste, aguarde um atraso de propagação razoável de alguns minutos e siga os requisitos de visualização, como assistir parte de um filme ou terminar um episódio. Consulte as diretrizes do "Assistir a seguir" para desenvolvedores de apps para mais detalhes.