Engage SDK menawarkan REST API untuk memberikan pengalaman menonton terus-menerus yang konsisten di seluruh platform non-Android seperti iOS dan Roku TV. API ini memungkinkan developer memperbarui status "Lanjutkan Menonton" untuk pengguna yang memilih ikut serta dari platform non-Android.
Prasyarat
- Anda harus menyelesaikan integrasi berbasis Engage SDK di perangkat terlebih dahulu. Langkah penting ini membuat hubungan yang diperlukan
antara ID pengguna Google dan
AccountProfileaplikasi Anda. - Akses dan Autentikasi API: Untuk melihat dan mengaktifkan API di Project Google Cloud, Anda harus melalui proses daftar yang diizinkan. Semua permintaan API memerlukan autentikasi.
Mendapatkan Akses
Untuk mendapatkan akses guna melihat dan mengaktifkan API di Konsol Google Cloud, akun Anda harus terdaftar.
- ID Pelanggan Google Workspace akan tersedia. Jika tidak tersedia, Anda mungkin perlu menyiapkan Google Workspace serta Akun Google yang ingin Anda gunakan untuk memanggil API.
- Siapkan akun dengan Konsol Google Cloud menggunakan email yang terkait dengan Google Workspace.
- Buat project baru.
- Buat akun layanan untuk Autentikasi API. Setelah Anda
membuat akun layanan, Anda akan memiliki dua item:
- ID akun layanan.
- File JSON dengan kunci akun layanan Anda. Jaga keamanan file ini. Anda akan memerlukannya untuk mengautentikasi klien ke API nanti.
- Workspace dan Akun Google terkait kini dapat menggunakan REST API. Setelah perubahan diterapkan, Anda akan diberi tahu apakah API siap dipanggil oleh akun layanan Anda.
- Ikuti langkah-langkah berikut untuk bersiap melakukan panggilan API yang didelegasikan.
Memublikasikan Cluster Lanjutan
Untuk memublikasikan data Engage, lakukan permintaan POST ke
API publishContinuationCluster menggunakan sintaksis berikut.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/publishContinuationCluster
Dengan:
package_name: Nama paket penyedia mediaaccountId: ID unik untuk akun pengguna di sistem Anda. Harus cocok denganaccountIdyang digunakan di jalur di perangkat.profileId: ID unik untuk profil pengguna dalam akun di sistem Anda. ID ini harus cocok dengan profileId yang digunakan di jalur di perangkat.
URL untuk akun tanpa profil adalah:
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/publishContinuationCluster
Payload untuk permintaan ditampilkan di kolom entities. entities
merepresentasikan daftar entity konten, yang dapat terdiri dari satu atau lebih
hal berikut: MovieEntity, TVEpisodeEntity, LiveStreamingVideoEntity
atau VideoClipEntity.
Kolom ini wajib diisi.
Isi Permintaan
Kolom |
Jenis |
Wajib |
Deskripsi |
entitas |
Daftar Objek MediaEntity |
Ya |
Daftar entitas konten dengan maksimum 5. Hanya lima teratas yang akan dipertahankan dan sisanya akan dihapus. Daftar kosong diizinkan untuk menandakan pengguna telah selesai menonton semua entitas. |
Kolom entities berisi movieEntity, tvEpisodeEntity, liveStreamingVideoEntity, dan videoClipEntity individual.
Kolom |
Jenis |
Deskripsi |
movieEntity |
MovieEntity |
Objek yang mewakili film dalam ContinuationCluster. |
tvEpisodeEntity |
TvEpisodeEntity |
Objek yang merepresentasikan episode TV dalam ContinuationCluster. |
liveStreamingVideoEntity |
LiveStreamingVideoEntity |
Objek yang merepresentasikan video live streaming dalam ContinuationCluster. |
videoClipEntity |
VideoClipEntity |
Objek yang merepresentasikan klip video dalam ContinuationCluster. |
Setiap objek dalam array entity harus berupa salah satu jenis MediaEntity yang tersedia, yaitu MovieEntity,
TvEpisodeEntity,
LiveStreamingVideoEntity, atau
VideoClipEntity,
bersama dengan kolom umum dan khusus jenis.
Cuplikan kode berikut menampilkan payload isi permintaan untuk
API publishContinuationCluster.
{
"entities": [
{
"movieEntity": {
"watch_next_type": "WATCH_NEXT_TYPE_CONTINUE",
"name": "Movie1",
"platform_specific_playback_uris": [
{
"uri": "https://www.example.com/movie_entity_uri_for_android",
"platforms": [
"PLATFORM_ANDROID_TV",
"PLATFORM_ANDROID"
]
},
{
"uri": "https://www.example.com/movie_entity_uri_for_iOS",
"platforms": [
"PLATFORM_IOS"
]
}
],
"poster_images": [
{
"url": "http://www.example.com/movie1_img1.png",
"width": 1920,
"height": 1080,
"accessibility_text": "Movie 1 HD poster"
},
{
"url": "http://www.example.com/movie1_imag2.png",
"width": 640,
"height": 360,
"accessibility_text": "Movie 1 SD poster"
}
],
"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": [
{
"uri": "https://www.example.com/episode_entity_uri_for_android_mobile",
"platforms": [
"PLATFORM_ANDROID"
]
},
{
"uri": "https://www.example.com/episode_entity_uri_for_android_tv",
"platforms": [
"PLATFORM_ANDROID_TV"
]
},
{
"uri": "https://www.example.com/episode_entity_uri_for_iOS",
"platforms": [
"PLATFORM_IOS"
]
}
],
"poster_images": [
{
"url": "http://www.example.com/episode1_img1.png",
"width": 1920,
"height": 1080,
"accessibility_text": "Episode 1 HD poster"
},
{
"url": "http://www.example.com/episode1_imag2.png",
"width": 640,
"height": 360,
"accessibility_text": "Episode 1 SD poster"
}
],
"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"
}
},
{
"liveStreamingVideoEntity": {
"name": "Live Sports Championship",
"watch_next_type": "WATCH_NEXT_TYPE_CONTINUE",
"last_engagement_time_millis": 1780978284000,
"last_play_back_position_time_millis": 1800000,
"duration_millis": 7200000,
"platform_specific_playback_uris": [
{
"uri": "https://www.example.com/live_streaming_entity_uri_for_android_tv",
"platforms": ["PLATFORM_ANDROID_TV"]
}
],
"poster_images": [
{
"url": "http://www.example.com/live_stream_image1.png",
"width": 1920,
"height": 1080,
"accessibility_text": "Live Sports Championship Cover Image"
}
],
"start_time_epoch_millis": 1780976484000,
"broadcaster": "Global Sports Network",
"broadcaster_icon": {
"url": "https://www.example.com/gsports.jpg",
"width": 512,
"height": 512,
"accessibility_text": "Global Sports Network Logo"
}
}
},
{
"videoClipEntity": {
"name": "How to Brew the Perfect Espresso",
"watch_next_type": "WATCH_NEXT_TYPE_CONTINUE",
"last_engagement_time_millis": 1780978284000,
"last_play_back_position_time_millis": 120000,
"duration_millis": 600000,
"platform_specific_playback_uris": [
{
"uri": "https://www.example.com/video_clip_entity_uri_for_android_tv",
"platforms": ["PLATFORM_ANDROID_TV"]
}
],
"poster_images": [
{
"url": "http://www.example.com/video_clip_image1.png",
"width": 1920,
"height": 1080,
"accessibility_text": "Espresso Tutorial Cover Image"
}
],
"created_time_epoch_millis": 1780900000000,
"creator": "Coffee Enthusiast John",
"creator_image": {
"url": "https://www.example.com/image/thumb/creators/john_avatar.jpg",
"width": 256,
"height": 256,
"accessibility_text": "John's Avatar"
}
}
}
]
}
Menghapus data Engage
Gunakan clearClusters API untuk menghapus data Engage.
Untuk menghapus data cluster lanjutan, lakukan permintaan POST ke API
clearClusters menggunakan sintaksis berikut.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/clearClusters
Dengan:
package_name: Nama paket penyedia media.accountId: ID unik untuk akun pengguna di sistem Anda. Harus cocok denganaccountIdyang digunakan di jalur di perangkat.profileId: ID unik untuk profil pengguna dalam akun di sistem Anda. ID ini harus cocok dengan profileId yang digunakan di jalur di perangkat.
Payload untuk clearClusters API hanya berisi satu kolom, reason, yang
berisi DeleteReason yang menentukan alasan
penghapusan data.
{
"reason": "DELETE_REASON_LOSS_OF_CONSENT"
}
Pengujian
Setelah berhasil memposting data, gunakan akun pengujian pengguna untuk memverifikasi bahwa konten yang diharapkan muncul di baris lanjutkan menonton di platform Google target seperti Google TV dan aplikasi seluler Google TV Android dan iOS.
Saat pengujian, izinkan penundaan propagasi yang wajar selama beberapa menit dan patuhi persyaratan menonton, seperti menonton sebagian film atau menyelesaikan satu episode. Lihat panduan Tonton Berikutnya untuk developer aplikasi untuk mengetahui detailnya.