התכונה 'המשך צפייה' משתמשת באוסף ההמשכים כדי להציג סרטונים שלא סיימתם לצפות בהם ופרקים הבאים לצפייה מאותה עונה של תוכנית טלוויזיה, מכמה אפליקציות בקבוצה אחת בממשק המשתמש. אתם יכולים להציג את הישויות שלהם בצביר ההמשך הזה. במדריך הזה נסביר איך לשפר את התעניינות המשתמשים באמצעות חוויית הצפייה 'המשך צפייה' בעזרת Engage SDK.
עבודה מקדימה
לפני שמתחילים, צריך לבצע את השלבים הבאים:
עדכון לרמת API לטירגוט 19 ומעלה
מוסיפים את ספריית
com.google.android.engage
לאפליקציה:יש ערכות SDK נפרדות שמשמשות לאינטגרציה: אחת לאפליקציות לנייד ואחת לאפליקציות לטלוויזיה.
נייד
dependencies { implementation 'com.google.android.engage:engage-core:1.5.5 }
טלוויזיה
dependencies { implementation 'com.google.android.engage:engage-tv:1.0.2 }
מגדירים את סביבת השירות של Engage כסביבת ייצור בקובץ
AndroidManifest.xml
.נייד
<meta-data android:name="com.google.android.engage.service.ENV" android:value="PRODUCTION" />
טלוויזיה
<meta-data android:name="com.google.android.engage.service.ENV" android:value="PRODUCTION" />
להוסיף הרשאה ל-
WRITE_EPG_DATA
עבור tv apk<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
כדי לוודא שהתוכן מתפרסם באופן מהימן, אפשר להשתמש בשירות רקע כמו
androidx.work
לתזמון.כדי לספק חוויית צפייה חלקה, צריך לפרסם את נתוני ההמשך של הצפייה כשמתרחשים האירועים הבאים:
- התחברות ראשונה: כשמשתמש מתחבר בפעם הראשונה, צריך לפרסם את הנתונים כדי לוודא שהיסטוריית הצפייה שלו תהיה זמינה באופן מיידי.
- יצירה או החלפה של פרופילים (אפליקציות עם כמה פרופילים): אם האפליקציה תומכת בכמה פרופילים, צריך לפרסם נתונים כשמשתמש יוצר פרופיל או עובר בין פרופילים.
- הפרעה בהפעלת סרטון: כדי לעזור למשתמשים להמשיך לצפות בסרטון מהמקום שבו הם הפסיקו, כדאי לפרסם נתונים כשהם משהים או מפסיקים סרטון, או כשהם יוצאים מהאפליקציה במהלך ההפעלה.
- עדכונים במגש 'המשך צפייה' (אם נתמך): כשמשתמש מסיר פריט מהמגש 'המשך צפייה', צריך לשקף את השינוי הזה על ידי פרסום נתונים מעודכנים.
- צפייה מלאה בסרטון:
- במקרה של סרטים, מסירים את הסרט שסיימתם לצפות בו ממגש 'המשך צפייה'. אם הסרט הוא חלק מסדרה, כדאי להוסיף את הסרט הבא כדי שהמשתמש ימשיך לצפות.
- במקרה של פרקים, כדאי להסיר את הפרק שהושלם ולהוסיף את הפרק הבא בסדרה, אם הוא זמין, כדי לעודד צפייה רציפה.
שילוב
AccountProfile
כדי לאפשר חוויה מותאמת אישית של 'המשך צפייה' ב-Google TV, צריך לספק פרטים על החשבון והפרופיל. משתמשים ב-AccountProfile כדי לספק:
מזהה חשבון: מזהה ייחודי שמייצג את החשבון של המשתמש באפליקציה. יכול להיות שזה מזהה החשבון בפועל או גרסה מוצפנת מתאימה.
מזהה פרופיל (אופציונלי): אם האפליקציה תומכת במספר פרופילים בחשבון יחיד, צריך לספק מזהה ייחודי לפרופיל המשתמש הספציפי (שוב, אמיתי או מוצפן).
// If your app only supports account
val accountProfile = AccountProfile.Builder()
.setAccountId("your_users_account_id")
.build()
// If your app supports both account and profile
val accountProfile = AccountProfile.Builder()
.setAccountId("your_users_account_id")
.setProfileId("your_users_profile_id")
.build()
יצירת ישויות
ב-SDK הוגדרו ישויות שונות שמייצגות כל סוג פריט. קבוצת המשך תומכת בישויות הבאות:
צריך לציין את מזהי ה-URI הספציפיים לפלטפורמה ואת תמונות הפוסטר של הישויות האלה.
בנוסף, אם עדיין לא עשיתם זאת, צריך ליצור כתובות URI להפעלה לכל פלטפורמה – כמו Android TV, Android או iOS. לכן, כשמשתמש ממשיך לצפות בכל פלטפורמה, האפליקציה משתמשת ב-URI של הפעלה ממוקדת כדי להפעיל את תוכן הווידאו.
// Required. Set this when you want continue watching entities to show up on
// Google TV
val playbackUriTv = PlatformSpecificUri.Builder()
.setPlatformType(PlatformType.TYPE_ANDROID_TV)
.setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))
.build()
// Required. Set this when you want continue watching entities to show up on
// Google TV Android app, Entertainment Space, Playstore Widget
val playbackUriAndroid = PlatformSpecificUri.Builder()
.setPlatformType(PlatformType.TYPE_ANDROID_MOBILE)
.setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))
.build()
// Optional. Set this when you want continue watching entities to show up on
// Google TV iOS app
val playbackUriIos = PlatformSpecificUri.Builder()
.setPlatformType(PlatformType.TYPE_IOS)
.setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))
.build()
val platformSpecificPlaybackUris =
Arrays.asList(playbackUriTv, playbackUriAndroid, playbackUriIos)
תמונות של פוסטרים צריכות לכלול URI ומידות בפיקסלים (גובה ורוחב). כדי להתאים את התוכן למכשירים שונים, כדאי לספק כמה תמונות פוסטר. עם זאת, חשוב לוודא שלכל התמונות יש יחס גובה-רוחב של 16:9 וגובה מינימלי של 200 פיקסלים, כדי שהישות 'המשך צפייה' תוצג בצורה נכונה, במיוחד במרכז הבידור של Google. יכול להיות שלא יוצגו תמונות שהגובה שלהן קטן מ-200 פיקסלים.
val images = Arrays.asList(
Image.Builder()
.setImageUri(Uri.parse("http://www.example.com/entity_image1.png"))
.setImageHeightInPixel(300)
.setImageWidthInPixel(169)
.build(),
Image.Builder()
.setImageUri(Uri.parse("http://www.example.com/entity_image2.png"))
.setImageHeightInPixel(640)
.setImageWidthInPixel(360)
.build()
// Consider adding other images for different form factors
)
MovieEntity
בדוגמה הזו מוסבר איך ליצור MovieEntity
עם כל שדות החובה:
val movieEntity = MovieEntity.Builder()
.setWatchNextType(WatchNextType.TYPE_CONTINUE)
.setName("Movie name")
.addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
.addPosterImages(images)
// Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
.setLastEngagementTimeMillis(1701388800000)
// Suppose the duration is 2 hours, it is 72000000 in milliseconds
.setDurationMills(72000000)
// Suppose last playback offset is 1 hour, 36000000 in milliseconds
.setLastPlayBackPositionTimeMillis(36000000)
.build()
כשמספקים פרטים כמו ז'אנרים וסיווגי תוכן, מערכת Google TV יכולה להציג את התוכן שלכם בצורה דינמית יותר ולחבר אותו לצופים המתאימים.
val genres = Arrays.asList("Action", "Science fiction")
val rating1 = RatingSystem.Builder().setAgencyName("MPAA").setRating("PG-13").build()
val contentRatings = Arrays.asList(rating1)
val movieEntity = MovieEntity.Builder()
...
.addGenres(genres)
.addContentRatings(contentRatings)
.build()
הישויות נשארות זמינות באופן אוטומטי למשך 60 יום, אלא אם מציינים זמן תפוגה קצר יותר. צריך להגדיר תפוגה בהתאמה אישית רק אם רוצים להסיר את הישות לפני תקופת ברירת המחדל הזו.
// Set the expiration time to be now plus 30 days in milliseconds
val expirationTime = DisplayTimeWindow.Builder()
.setEndTimestampMillis(now().toMillis()+2592000000).build()
val movieEntity = MovieEntity.Builder()
...
.addAvailabilityTimeWindow(expirationTime)
.build()
TvEpisodeEntity
בדוגמה הזו מוסבר איך ליצור TvEpisodeEntity
עם כל השדות הנדרשים:
val tvEpisodeEntity = TvEpisodeEntity.Builder()
.setWatchNextType(WatchNextType.TYPE_CONTINUE)
.setName("Episode name")
.addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
.addPosterImages(images)
// Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
.setLastEngagementTimeMillis(1701388800000)
.setDurationMills(72000000) // 2 hours in milliseconds
// 45 minutes and 15 seconds in milliseconds is 2715000
.setLastPlayBackPositionTimeMillis(2715000)
.setEpisodeNumber("2")
.setSeasonNumber("1")
.setShowTitle("Title of the show")
.build()
מחרוזת מספר הפרק (לדוגמה, "2"
) ומחרוזת מספר העונה (לדוגמה, "1"
)
יוצגו בפורמט הנכון בכרטיס 'המשך צפייה'. שימו לב: הערכים צריכים להיות מחרוזת מספרית, ולא "e2", "episode 2", "s1" או "season 1".
אם לתוכנית טלוויזיה מסוימת יש עונה אחת בלבד, צריך להגדיר את מספר העונה כ-1.
כדי להגדיל את הסיכויים שהצופים ימצאו את התוכן שלכם ב-Google TV, כדאי לספק נתונים נוספים כמו ז'אנרים, סיווגי תוכן וחלונות זמן של זמינות, כי הפרטים האלה יכולים לשפר את אפשרויות התצוגה והסינון.
val genres = Arrays.asList("Action", "Science fiction")
val rating1 = RatingSystem.Builder().setAgencyName("MPAA").setRating("PG-13").build()
val contentRatings = Arrays.asList(rating1)
val tvEpisodeEntity = TvEpisodeEntity.Builder()
...
.addGenres(genres)
.addContentRatings(contentRatings)
.setSeasonTitle("Season Title")
.setShowTitle("Show Title")
.build()
VideoClipEntity
הנה דוגמה ליצירת VideoClipEntity
עם כל שדות החובה.
VideoClipEntity
מייצג קליפ שנוצר על ידי משתמש, כמו סרטון ב-YouTube.
val videoClipEntity = VideoClipEntity.Builder()
.setPlaybackUri(Uri.parse("https://www.example.com/uri_for_current_platform")
.setWatchNextType(WatchNextType.TYPE_CONTINUE)
.setName("Video clip name")
.addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
.addPosterImages(images)
// Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
.setLastEngagementTimeMillis(1701388800000)
.setDurationMills(600000) //10 minutes in milliseconds
.setLastPlayBackPositionTimeMillis(300000) //5 minutes in milliseconds
.addContentRating(contentRating)
.build()
אפשר גם להגדיר את היוצר, את תמונת היוצר, את זמן היצירה במילישניות או את חלון הזמן של הזמינות .
LiveStreamingVideoEntity
דוגמה ליצירת LiveStreamingVideoEntity
עם כל שדות החובה.
val liveStreamingVideoEntity = LiveStreamingVideoEntity.Builder()
.setPlaybackUri(Uri.parse("https://www.example.com/uri_for_current_platform")
.setWatchNextType(WatchNextType.TYPE_CONTINUE)
.setName("Live streaming name")
.addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
.addPosterImages(images)
// Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
.setLastEngagementTimeMillis(1701388800000)
.setDurationMills(72000000) //2 hours in milliseconds
.setLastPlayBackPositionTimeMillis(36000000) //1 hour in milliseconds
.addContentRating(contentRating)
.build()
אפשר גם להגדיר את שעת ההתחלה, את השדרן, את הסמל של השדרן או את חלון הזמינות של ישות השידור החי.
מידע מפורט על מאפיינים ודרישות זמין בהפניית ה-API.
ציון נתונים של אשכול המשך
AppEngagePublishClient
אחראי לפרסום של אשכול ההמשך.
משתמשים ב-publishContinuationCluster()
method כדי לפרסם אובייקט ContinuationCluster
.
קודם צריך להשתמש ב-isServiceAvailable() כדי לבדוק אם השירות זמין לשילוב.
client.publishContinuationCluster(
PublishContinuationClusterRequest
.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.setAccountProfile(accountProfile)
.addEntity(movieEntity1)
.addEntity(movieEntity2)
.addEntity(tvEpisodeEntity1)
.addEntity(tvEpisodeEntity2)
.setSyncAcrossDevices(true)
.build()
)
.build()
)
כשהשירות מקבל את הבקשה, הפעולות הבאות מתבצעות בעסקה אחת:
- הנתונים הקיימים של
ContinuationCluster
משותף המפתחים יוסרו. - הנתונים מהבקשה מנותחים ומאוחסנים ב-
ContinuationCluster
המעודכן.
במקרה של שגיאה, הבקשה כולה נדחית והמצב הקיים נשמר.
ממשקי ה-API לפרסום הם ממשקי API מסוג upsert, והם מחליפים את התוכן הקיים. אם אתם צריכים לעדכן ישות ספציפית ב-ContinuationCluster, תצטרכו לפרסם מחדש את כל הישויות.
נתוני ContinuationCluster צריכים להישלח רק לגבי חשבונות למבוגרים. הפרסום יתבצע רק אם AccountProfile שייך למבוגר.
סנכרון בין מכשירים
הדגל SyncAcrossDevices
קובע אם נתוני ContinuationCluster
של המשתמש מסונכרנים בין מכשירים כמו טלוויזיה, טלפון, טאבלטים וכו'. סנכרון בין מכשירים מושבת כברירת מחדל.
ערכים:
- true: נתוני ContinuationCluster משותפים בין כל המכשירים של המשתמש כדי לאפשר חוויית צפייה חלקה. אנחנו ממליצים מאוד לבחור באפשרות הזו כדי ליהנות מחוויית שימוש אופטימלית בכל המכשירים.
- false: הגישה לנתוני ContinuationCluster מוגבלת למכשיר הנוכחי.
קבלת הסכמה:
אפליקציית המדיה צריכה לספק הגדרה ברורה להפעלה או להשבתה של סנכרון בין מכשירים. להסביר למשתמש את היתרונות של ההגדרה ולאחסן את ההעדפה שלו פעם אחת, ואז להחיל אותה ב-publishContinuationCluster בהתאם.
// Example to allow cross device syncing.
client.publishContinuationCluster(
PublishContinuationClusterRequest
.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.setAccountProfile(accountProfile)
.setSyncAcrossDevices(true)
.build()
)
.build()
)
כדי להפיק את המרב מהתכונה שלנו למעקב המרות חוצה-מכשירים, צריך לוודא שהאפליקציה מקבלת את הסכמת המשתמשים ולהפעיל את האפשרות SyncAcrossDevices
כדי true
. כך התוכן יכול להסתנכרן בצורה חלקה בין מכשירים, מה שמוביל לחוויית משתמש טובה יותר ולמעורבות מוגברת. לדוגמה, שותף שהטמיע את התכונה הזו נהנה מעלייה של 40% במספר הקליקים על 'המשך צפייה', כי התוכן שלו הוצג במספר מכשירים.
מחיקת נתוני הגילוי של סרטונים
כדי למחוק ידנית את נתוני המשתמש מהשרת של Google TV לפני תקופת השמירה הרגילה של 60 יום, משתמשים בשיטה client.deleteClusters(). לאחר קבלת הבקשה, השירות ימחק את כל נתוני הגילוי הקיימים של סרטונים בפרופיל החשבון או בכל החשבון.
ה-enum DeleteReason
מגדיר את הסיבה למחיקת הנתונים.
הקוד הבא מסיר את הנתונים של 'המשך צפייה' אחרי התנתקות.
// If the user logs out from your media app, you must make the following call
// to remove continue watching data from the current google TV device,
// otherwise, the continue watching data will persist on the current
// google TV device until 60 days later.
client.deleteClusters(
DeleteClustersRequest.Builder()
.setAccountProfile(AccountProfile())
.setReason(DeleteReason.DELETE_REASON_USER_LOG_OUT)
.setSyncAcrossDevices(true)
.build()
)
בדיקה
משתמשים באפליקציית האימות כדי לוודא שהשילוב של Engage SDK פועל בצורה תקינה. אפליקציית Android הזו מספקת כלים שיעזרו לכם לאמת את הנתונים ולוודא שהכוונה לשידור מטופלת בצורה תקינה.
אחרי שמפעילים את ה-API של הפרסום, בודקים באפליקציית האימות שהנתונים מתפרסמים בצורה נכונה. אשכול ההמשך אמור להופיע כשורה נפרדת בממשק של האפליקציה.
- צריך להגדיר את Engage Service Flag רק לגרסאות שאינן גרסאות ייצור בקובץ Android Manifest של האפליקציה.
- מתקינים את אפליקציית Engage Verify ופותחים אותה
- אם
isServiceAvailable
הואfalse
, לוחצים על הלחצן 'הפעלה/השבתה' כדי להפעיל אותו. - מזינים את שם החבילה של האפליקציה כדי לראות באופן אוטומטי את הנתונים שפורסמו אחרי שתתחילו לפרסם.
- בודקים את הפעולות הבאות באפליקציה:
- מתחברים לחשבון.
- מעבר בין פרופילים(אם רלוונטי).
- מפעילים סרטון, ואז עוצרים אותו או חוזרים לדף הבית.
- סוגרים את האפליקציה במהלך הפעלת הסרטון.
- להסיר פריט מהשורה 'המשך צפייה' (אם האפשרות הזו נתמכת).
- אחרי כל פעולה, מוודאים שהאפליקציה הפעילה את ה-API
publishContinuationClusters
ושהנתונים מוצגים בצורה נכונה באפליקציית האימות. באפליקציית האימות יוצג סימן וי ירוק עם הכיתוב 'הכול תקין' ליד ישויות שהוטמעו בצורה נכונה.
איור 1. אימות האפליקציה בוצע בהצלחה אפליקציית האימות תסמן ישויות בעייתיות.
איור 2. שגיאה באפליקציית האימות כדי לפתור בעיות בישויות, משתמשים בשלט הרחוק של הטלוויזיה כדי לבחור את הישות באפליקציית האימות וללחוץ עליה. הבעיות הספציפיות יוצגו ויודגשו באדום לבדיקה (ראו דוגמה בהמשך).
איור 3. פרטי השגיאה באפליקציית האימות
REST API
Engage SDK מציע API ל-REST כדי לספק חוויה עקבית של 'המשך צפייה' בפלטפורמות שאינן Android, כמו iOS ו-Roku TV. ממשק ה-API מאפשר למפתחים לעדכן את הסטטוס 'המשך צפייה' עבור משתמשים שהביעו הסכמה, מפלטפורמות שאינן Android.
דרישות מוקדמות
- קודם צריך לסיים את השילוב של on-device Engage SDK.
בשלב הזה נוצרת ההתאמה הנדרשת בין מזהה המשתמש של Google לבין
AccountProfile
של האפליקציה. - גישה ל-API ואימות: כדי להציג ולהפעיל את ה-API בפרויקט שלכם ב-Google Cloud, אתם צריכים לעבור תהליך של רשימת היתרים. כל הבקשות ל-API מחייבות אימות.
קבלת גישה
כדי לקבל גישה לצפייה ב-API ולהפעלה שלו במסוף Google Cloud, צריך לרשום את החשבון.
- מספר הלקוח ב-Google Workspace צריך להיות זמין. אם האפשרות הזו לא זמינה, יכול להיות שתצטרכו להגדיר חשבון Google Workspace וגם חשבונות Google שבהם אתם רוצים להשתמש כדי לקרוא ל-API.
- מגדירים חשבון במסוף Google Cloud באמצעות כתובת אימייל שמשויכת ל-Google Workspace.
- יצירת פרויקט חדש
- יוצרים חשבון שירות לאימות API. אחרי שיוצרים את חשבון השירות, מקבלים שני פריטים:
- מזהה של חשבון שירות.
- קובץ JSON עם המפתח של חשבון השירות. חשוב לשמור את הקובץ הזה בצורה מאובטחת, כי תצטרכו אותו בהמשך כדי לאמת את הלקוח ב-API.
- מעכשיו אפשר להשתמש בממשקי REST API ב-Workspace ובחשבונות Google שמשויכים אליו. אחרי שהשינוי יתעדכן, תקבלו הודעה אם ה-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
: המזהה הייחודי של הפרופיל של המשתמש בחשבון במערכת שלכם. המזהה צריך להיות זהה למזהה הפרופיל שמופיע בנתיב במכשיר.
כתובת ה-URL של החשבון ללא פרופיל היא:
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/publishContinuationCluster
המטען הייעודי (payload) של הבקשה מיוצג בשדה entities
. entities
מייצג רשימה של ישויות תוכן שיכולות להיות MovieEntity
או
TVEpisodeEntity
. יש למלא שדה זה.
גוף הבקשה
שדה |
סוג השידור |
חובה |
תיאור |
ישויות |
רשימה של אובייקטים מסוג MediaEntity |
כן |
רשימה של ישויות תוכן (עד 5), רק חמש הראשונות יישמרו והשאר יימחקו.מותר להשתמש ברשימה ריקה כדי לציין שהמשתמש סיים לצפות בכל הישויות. |
השדה entities
מכיל את הערכים movieEntity
ו-tvEpisodeEntity
.
שדה |
סוג השידור |
חובה |
תיאור |
movieEntity |
MovieEntity |
כן |
אובייקט שמייצג סרט ב-ContinuationCluster. |
tvEpisodeEntity |
TvEpisodeEntity |
כן |
אובייקט שמייצג פרק בתוכנית טלוויזיה בתוך ContinuationCluster. |
כל אובייקט במערך הישויות חייב להיות אחד מסוגי MediaEntity הזמינים, כלומר MovieEntity
ו-TvEpisodeEntity
, בנוסף לשדות משותפים ולשדות ספציפיים לסוג.
בקטע הקוד הבא מוצג המטען הייעודי (payload) של תוכן הבקשה עבור 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"
}
}
]
}
מחיקת נתוני הגילוי של הסרטון
משתמשים ב-clearClusters
API כדי להסיר את נתוני הגילוי של הסרטון.
משתמשים בכתובת URL של POST כדי להסיר את הישויות מנתוני הגילוי של הסרטון.
כדי למחוק את נתוני קלאסטר ההמשכיות, שולחים בקשת POST אל ה-API של clearClusters
באמצעות התחביר הבא.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/clearClusters
איפה:
-
package_name
: שם החבילה של ספק המדיה. -
accountId
: המזהה הייחודי של חשבון המשתמש במערכת שלכם. הוא צריך להיות זהה ל-accountId
שמופיע בנתיב במכשיר. -
profileId
: המזהה הייחודי של הפרופיל של המשתמש בחשבון במערכת שלכם. המזהה צריך להיות זהה למזהה הפרופיל שמופיע בנתיב במכשיר.
המטען הייעודי (payload) של clearClusters
API מכיל רק שדה אחד, reason
, שמכיל DeleteReason
שמציין את הסיבה להסרת הנתונים.
{
"reason": "DELETE_REASON_LOSS_OF_CONSENT"
}
בדיקה
אחרי פרסום הנתונים בהצלחה, משתמשים בחשבון בדיקה כדי לוודא שהתוכן הרצוי מופיע בשורה 'המשך צפייה' בפלטפורמות היעד של Google, כמו Google TV ואפליקציות Google TV לנייד ב-Android וב-iOS.
במהלך הבדיקה, צריך להמתין כמה דקות עד שהשינויים יתעדכנו, ולעמוד בדרישות הצפייה, כמו צפייה בחלק מסרט או סיום צפייה בפרק. פרטים נוספים זמינים בהנחיות למפתחי אפליקציות בנושא התכונה 'הצפייה הבאה'.