Le SDK Engage propose une API REST pour offrir une expérience de visionnage cohérente sur les plates-formes non Android, telles qu'iOS et Roku TV. L'API permet aux développeurs de mettre à jour l'état "Reprendre la lecture" pour les utilisateurs ayant activé cette option sur des plates-formes non Android.
Prérequis
- Vous devez d'abord terminer l'intégration basée sur le SDK Engage sur l'appareil. Cette étape essentielle établit l'association nécessaire entre l'ID utilisateur de Google et le
AccountProfilede votre application. - Accès et authentification de l'API : pour afficher et activer l'API dans votre projet Google Cloud, vous devez suivre un processus de liste d'autorisation. Toutes les requêtes API nécessitent une authentification.
Obtenir l'accès
Pour pouvoir afficher et activer l'API dans la console Google Cloud, vous devez enregistrer votre compte.
- Le numéro client Google Workspace doit être disponible. Si ce n'est pas le cas, vous devrez peut-être configurer un compte Google Workspace, ainsi que tous les comptes Google que vous souhaitez utiliser pour appeler l'API.
- Configurez un compte dans la console Google Cloud à l'aide d'une adresse e-mail associée à Google Workspace.
- Créez un projet.
- Créez un compte de service pour l'authentification de l'API. Une fois le compte de service créé, vous disposerez de deux éléments :
- Un ID de compte de service
- Un fichier JSON contenant la clé de votre compte de service Conservez ce fichier en lieu sûr. Vous en aurez besoin pour authentifier votre client auprès de l'API ultérieurement.
- Les comptes Workspace et Google associés peuvent désormais utiliser les API REST. Une fois la modification propagée, vous serez informé si l'API est prête à être appelée par vos comptes de service.
- Suivez ces étapes pour vous préparer à effectuer un appel d'API délégué.
Publier le cluster "Continuation"
Pour publier les données Engage, envoyez une requête POST à l'API publishContinuationCluster en utilisant la syntaxe suivante.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/publishContinuationCluster
Où :
package_name: nom du package du fournisseur de contenu multimédiaaccountId: ID unique du compte de l'utilisateur dans votre système. Il doit correspondre à l'accountIdutilisé dans le chemin d'accès sur l'appareil.profileId: ID unique du profil de l'utilisateur dans le compte de votre système. Il doit correspondre au profileId utilisé dans le chemin d'accès sur l'appareil.
L'URL du compte sans profil est la suivante :
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/publishContinuationCluster
La charge utile de la requête est représentée dans le champ entities. entities
représente une liste d'entités de contenu, qui peuvent être MovieEntity ou TVEpisodeEntity. Ce champ est obligatoire.
Corps de la requête
Champ |
Type |
Obligatoire |
Description |
entités |
Liste d'objets MediaEntity |
Oui |
Liste d'entités de contenu (5 maximum). Seules les cinq premières seront conservées, les autres seront supprimées. Une liste vide est autorisée pour indiquer que l' utilisateur a terminé de regarder toutes les entités. |
Le champ entities contient des movieEntity et tvEpisodeEntity individuels.
Champ |
Type |
Obligatoire |
Description |
movieEntity |
MovieEntity |
Oui |
Objet représentant un film dans le ContinuationCluster. |
tvEpisodeEntity |
TvEpisodeEntity |
Oui |
Objet représentant un épisode de série télévisée dans le ContinuationCluster. |
Chaque objet du tableau d'entités doit être l'un des types MediaEntity disponibles
à savoir MovieEntity et
TvEpisodeEntity,ainsi que des champs communs et spécifiques au type.
L'extrait de code suivant présente la charge utile du corps de la requête pour l'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"
}
}
]
}
Supprimer les données Engage
Utilisez l'API clearClusters pour supprimer les données Engage.
Pour supprimer les données du cluster "Continuation", envoyez une requête POST à l'API clearClusters en utilisant la syntaxe suivante.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/clearClusters
Où :
package_name: nom du package du fournisseur de contenu multimédia.accountId: ID unique du compte de l'utilisateur dans votre système. Il doit correspondre à l'accountIdutilisé dans le chemin d'accès sur l'appareil.profileId: ID unique du profil de l'utilisateur dans le compte de votre système. Il doit correspondre au profileId utilisé dans le chemin d'accès sur l'appareil.
La charge utile de l'API clearClusters ne contient qu'un seul champ, reason, qui
contient un DeleteReason spécifiant la raison de la suppression des données.
{
"reason": "DELETE_REASON_LOSS_OF_CONSENT"
}
Tests
Une fois les données publiées, utilisez un compte de test utilisateur pour vérifier que le contenu attendu s'affiche dans la ligne "Reprendre la lecture" sur les surfaces Google cibles, telles que Google TV et les applications mobiles Google TV pour Android et iOS.
Lors des tests, prévoyez un délai de propagation raisonnable de quelques minutes et respectez les exigences de visionnage, par exemple en regardant une partie d'un film ou en terminant un épisode. Pour en savoir plus, consultez les consignes relatives au canal "À regarder ensuite" pour les développeurs d'applications pour détails.