Интеграция функции «Продолжить просмотр» с помощью REST API

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 необходимо зарегистрировать свою учетную запись.

  1. Идентификатор клиента Google Workspace должен быть доступен. Если он недоступен, вам может потребоваться настроить Google Workspace, а также любые учетные записи Google, которые вы хотите использовать для вызова API.
  2. Создайте учетную запись в Google Cloud Console, используя адрес электронной почты, связанный с Google Workspace.
  3. Создать новый проект .
  4. Создайте учетную запись службы для аутентификации API. После создания учетной записи службы у вас будет два элемента:
    • Идентификатор учетной записи службы.
    • JSON-файл с ключом вашей учетной записи сервиса. Храните этот файл в безопасности. Он понадобится вам для аутентификации клиента в API позже.
  5. Теперь Workspace и связанные с ним учетные записи Google могут использовать REST API. После того, как изменения распространятся, вы получите уведомление о готовности API к вызову из ваших сервисных учетных записей.
  6. Выполните следующие шаги , чтобы подготовиться к выполнению делегированного вызова 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 для разработчиков приложений .