Integrar o recurso "Continuar assistindo" usando a API REST

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 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 visualizar e ativar a API no seu projeto do Google Cloud, é necessário 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 do cliente do Google Workspace precisa estar disponível. Caso contrário, 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. Depois que 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 do Engage, 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 no dispositivo.
  • profileId: o ID exclusivo do perfil do usuário na conta do seu sistema. Ele precisa corresponder ao profileId usado no caminho no 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

entities

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 é permitida para 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 do Engage

Use a API clearClusters para remover os dados do Engage.

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 no dispositivo.
  • profileId: o ID exclusivo do perfil do usuário na conta do seu sistema. Ele precisa corresponder ao profileId usado no caminho no 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 Google TV para dispositivos móveis 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 recurso "Assistir a seguir" para desenvolvedores de apps para mais detalhes.