book_path: /distribute/other-docs/_book.yaml project_path: /distribute/other-docs/_project.yaml
Engage SDK предоставляет REST API для обеспечения единообразного просмотра контента на платформах, отличных от Android, таких как iOS и Roku TV. API позволяет разработчикам обновлять статус «Продолжить просмотр» для пользователей, давших согласие на обновление, на платформах, отличных от Android.
Предварительные требования
- Сначала необходимо завершить интеграцию с использованием Engage SDK на устройстве . Этот важный шаг устанавливает необходимую связь между идентификатором пользователя Google и
AccountProfileвашего приложения. - Доступ к API и аутентификация: Чтобы просмотреть и включить API в своем проекте Google Cloud, необходимо пройти процедуру добавления в список разрешенных. Все запросы к API требуют аутентификации.
Получить доступ
Для доступа к просмотру и включению API в консоли Google Cloud необходимо зарегистрировать свою учетную запись.
- Идентификатор клиента Google Workspace должен быть доступен. Если он недоступен, вам может потребоваться настроить Google Workspace, а также любые учетные записи Google, которые вы хотите использовать для вызова API.
- Создайте учетную запись в Google Cloud Console, используя адрес электронной почты, связанный с Google Workspace.
- Создать новый проект .
- Создайте учетную запись службы для аутентификации API. После создания учетной записи службы у вас будет два элемента:
- Идентификатор учетной записи службы.
- JSON-файл с ключом вашей учетной записи сервиса. Храните этот файл в безопасности. Он понадобится вам для аутентификации клиента в API позже.
- Теперь Workspace и связанные с ним учетные записи Google могут использовать REST API. После того, как изменения распространятся, вы получите уведомление о готовности API к вызову из ваших сервисных учетных записей.
- Выполните следующие шаги , чтобы подготовиться к выполнению делегированного вызова API.
Опубликовать кластер продолжения
Для публикации данных о найденных видеофайлах выполните POST-запрос к API publishContinuationCluster , используя следующий синтаксис.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/publishContinuationCluster
Где:
-
package_name: Название пакета поставщика медиафайлов -
accountId: Уникальный идентификатор учетной записи пользователя в вашей системе. Он должен совпадать сaccountIdиспользуемым в пути доступа на устройстве. -
profileId: Уникальный идентификатор профиля пользователя в учетной записи в вашей системе. Он должен совпадать с profileId, используемым в пути на устройстве.
URL-адрес учетной записи без профиля:
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/publishContinuationCluster
Содержимое запроса представлено в поле entities . entities представляет собой список сущностей контента, которые могут быть либо MovieEntity , либо TVEpisodeEntity . Это обязательное поле.
Текст запроса
Поле | Тип | Необходимый | Описание |
сущности | Список объектов MediaEntity | Да | Список объектов контента, максимум 5. Будут сохранены только пять верхних элементов, остальные удалены. Пустой список может означать, что пользователь завершил просмотр всех объектов. |
В entities полей сущности входят отдельные объекты movieEntity и tvEpisodeEntity .
Поле | Тип | Необходимый | Описание |
movieEntity | MovieEntity | Да | Объект, представляющий собой фильм в рамках ContinuationCluster. |
tvEpisodeEntity | TvEpisodeEntity | Да | Объект, представляющий собой эпизод телесериала в рамках ContinuationCluster. |
Каждый объект в массиве сущностей должен быть одним из доступных типов MediaEntity, а именно MovieEntity и TvEpisodeEntity , а также содержать общие и специфичные для типа поля.
Приведённый ниже фрагмент кода демонстрирует полезную нагрузку тела запроса для 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"
}
}
]
}
Удалите данные обнаружения видео.
Используйте API clearClusters для удаления данных обнаружения видео.
Для удаления данных кластера продолжения выполните POST-запрос к API clearClusters , используя следующий синтаксис.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/clearClusters
Где:
-
package_name: Название пакета поставщика медиаконтента. -
accountId: Уникальный идентификатор учетной записи пользователя в вашей системе. Он должен совпадать сaccountIdиспользуемым в пути доступа на устройстве. -
profileId: Уникальный идентификатор профиля пользователя в учетной записи в вашей системе. Он должен совпадать с profileId, используемым в пути на устройстве.
Полезная нагрузка для API clearClusters содержит только одно поле, reason , которое содержит параметр DeleteReason , указывающий причину удаления данных.
{
"reason": "DELETE_REASON_LOSS_OF_CONSENT"
}
Тестирование
После успешной отправки данных используйте тестовую учетную запись пользователя, чтобы убедиться, что ожидаемый контент отображается в строке «Продолжить просмотр» на целевых устройствах Google, таких как Google TV и мобильные приложения Google TV для Android и iOS.
При тестировании допускайте разумную задержку распространения сигнала в несколько минут и соблюдайте требования часов, например, смотрите часть фильма или досматривайте серию. Для получения более подробной информации обратитесь к рекомендациям Watch Next для разработчиков приложений .