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
AccountProfiledo 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.
- 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.
- Configure uma conta no console do Google Cloud usando um e-mail associado ao Google Workspace.
- Crie um projeto.
- 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.
- 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.
- 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 aoaccountIdusado 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 aoaccountIdusado 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.