Pakiet Engage SDK udostępnia interfejs REST API, który zapewnia spójne środowisko kontynuowania oglądania na platformach innych niż Android, takich jak iOS i Roku TV. Interfejs API umożliwia deweloperom aktualizowanie stanu „Kontynuuj oglądanie” w przypadku użytkowników, którzy wyrazili zgodę na korzystanie z platform innych niż Android.
Wymagania wstępne
- Najpierw musisz zakończyć integrację opartą na pakiecie Engage SDK na urządzeniu. Ten ważny krok ustanawia niezbędne powiązanie między identyfikatorem użytkownika Google a elementem
AccountProfileTwojej aplikacji. - Dostęp do interfejsu API i uwierzytelnianie: aby wyświetlić i włączyć interfejs API w projekcie Google Cloud, musisz przejść proces dodawania do listy dozwolonych. Wszystkie żądania interfejsu API wymagają uwierzytelnienia.
Uzyskiwanie dostępu
Aby uzyskać dostęp do wyświetlania i włączania interfejsu API w konsoli Google Cloud, musisz zarejestrować swoje konto.
- Musisz mieć identyfikator klienta Google Workspace. Jeśli go nie masz, musisz skonfigurować Google Workspace oraz wszystkie konta Google, których chcesz używać do wywoływania interfejsu API.
- Skonfiguruj konto w konsoli Google Cloud, używając adresu e-mail powiązanego z Google Workspace.
- Utwórz nowy projekt.
- Utwórz konto usługi na potrzeby uwierzytelniania interfejsu API. Po utworzeniu konta usługi będziesz mieć 2 elementy:
- Identyfikator konta usługi.
- Plik JSON z kluczem konta usługi. Zabezpiecz ten plik. Będzie on potrzebny do późniejszego uwierzytelnienia klienta w interfejsie API.
- Obszar roboczy i powiązane z nim konta Google mogą teraz korzystać z interfejsów REST API. Gdy zmiany zostaną wprowadzone, otrzymasz powiadomienie o tym, czy interfejs API jest gotowy do wywoływania przez Twoje konta usługi.
- Wykonaj te czynności, aby przygotować się do wykonania wywołania interfejsu API z delegowaniem.
Publikowanie klastra kontynuacji
Aby opublikować dane Engage, wyślij żądanie POST do interfejsu publishContinuationCluster API, używając tej składni.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/publishContinuationCluster
Gdzie:
package_name: nazwa pakietu dostawcy multimediów.accountId: unikalny identyfikator konta użytkownika w Twoim systemie. Musi być zgodny z elementemaccountIdużywanym w ścieżce na urządzeniu.profileId: unikalny identyfikator profilu użytkownika na koncie w Twoim systemie. Musi być zgodny z elementem `profileId` używanym w ścieżce na urządzeniu.
Adres URL konta bez profilu:
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/publishContinuationCluster
Ładunek żądania jest reprezentowany w polu entities. entities
to lista elementów treści, które mogą być elementami MovieEntity lub TVEpisodeEntity. To pole jest wymagane.
Treść żądania
Pole |
Typ |
Wymagany |
Opis |
entities |
Lista obiektów MediaEntity |
Tak |
Lista elementów treści, która może zawierać maksymalnie 5 elementów. Zachowanych zostanie tylko pierwszych 5 elementów a reszta zostanie odrzucona. Pusta lista jest dozwolona, jeśli użytkownik skończył oglądać wszystkie elementy. |
Pole entities zawiera poszczególne elementy movieEntity i tvEpisodeEntity.
Pole |
Typ |
Wymagany |
Opis |
movieEntity |
MovieEntity |
Tak |
Obiekt reprezentujący film w ContinuationCluster. |
tvEpisodeEntity |
TvEpisodeEntity |
Tak |
Obiekt reprezentujący odcinek programu telewizyjnego w ContinuationCluster. |
Każdy obiekt w tablicy elementów musi być jednym z dostępnych typów MediaEntity
czyli MovieEntity oraz
TvEpisodeEntity,oraz zawierać pola wspólne i pola specyficzne dla danego typu.
Ten fragment kodu przedstawia ładunek treści żądania dla interfejsu publishContinuationCluster API.
{
"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"
}
}
]
}
Usuwanie danych Engage
Aby usunąć dane Engage, użyj interfejsu clearClusters API.
Aby usunąć dane klastra kontynuacji, wyślij żądanie POST do interfejsu clearClusters API, używając tej składni.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/clearClusters
Gdzie:
package_name: nazwa pakietu dostawcy multimediów.accountId: unikalny identyfikator konta użytkownika w Twoim systemie. Musi być zgodny z elementemaccountIdużywanym w ścieżce na urządzeniu.profileId: unikalny identyfikator profilu użytkownika na koncie w Twoim systemie. Musi być zgodny z elementem `profileId` używanym w ścieżce na urządzeniu.
Ładunek interfejsu clearClusters API zawiera tylko 1 pole – reason, które
zawiera element DeleteReason określający przyczynę usunięcia danych.
{
"reason": "DELETE_REASON_LOSS_OF_CONSENT"
}
Testowanie
Po przesłaniu danych użyj testowego konta użytkownika, aby sprawdzić, czy oczekiwane treści pojawiają się w wierszu „Kontynuuj oglądanie” w docelowych usługach Google, takich jak Google TV oraz aplikacje mobilne Google TV na Androida i iOS.
Podczas testowania uwzględnij rozsądne opóźnienie propagacji wynoszące kilka minut i przestrzegaj wymagań dotyczących oglądania, np. obejrzyj część filmu lub cały odcinek. Więcej informacji znajdziesz we wskazówkach dla deweloperów aplikacji dotyczących funkcji „Następny” szczegółach.