המשתמשים מעדיפים לצפות בתוכן או להאזין לתוכן שכבר יש להם גישה אליו, כמו תוכן של מינוי קיים. אם Google יודעת לאיזה תוכן יש למשתמש גישה באפליקציה או בפלטפורמה שלכם, היא יכולה ליצור תוצאת חיפוש או תגובה טובות יותר כדי להפנות את המשתמש לתוכן הזה.

זיהוי דרישות הגישה לתוכן
עליכם לציין את דרישות הגישה לכל חבילת תוכן בקטלוג. כשעושים את זה, כדאי להתייחס לשאלות הבאות:
- האם המשתמשים צריכים להתחבר לאפליקציה או לפלטפורמה שלכם כדי לגשת לתוכן?
האם המשתמשים צריכים מינוי?
פעולות צפייה בלבד:
- האם המשתמשים צריכים מינוי מספק שירותים חיצוני?
- האם אתם מציעים מינוי מדורג, מינוי לכמה חבילות או מינוי לחבילת ערוצים?
פעולות צפייה בלבד: האם המשתמשים צריכים לשכור או לרכוש את התוכן?
האם דרישות הגישה משתנות לאורך זמן?
האם דרישת הגישה תלויה במיקום המכשיר?
סוגים של הגבלות גישה
יש שני סוגים של הגבלות גישה:
סוג חומת התשלום
אפשר להגביל את הגישה לתוכן לפי סוג חומת התשלום. בטבלה הבאה מפורטים סוגי חומות התשלום השונים:
סוג חומת התשלום | דוגמה | קטגוריה |
---|---|---|
לא נדרשת רכישה או התחברות. | רשרוש | nologinrequired |
המשתמש צריך להיות מחובר, אבל לא צריך מינוי בתשלום. | Vudu (AVOD) | free |
למשתמש צריך להיות מינוי פעיל. הגישה לא תלויה ברמת המינוי. | Netflix |
|
למשתמש צריך להיות מינוי פעיל. הגישה תלויה ברמת המינוי. | Hulu (תוספים) |
|
התוכן זמין למשך זמן מוגבל אחרי הרכישה. | Vudu | rental |
התוכן זמין ללא הגבלת זמן אחרי הרכישה. | Vudu | purchase |
התוכן זמין באמצעות מינוי לכבלים. | HBO GO | externalSubscription |
סוג חומת התשלום לפעולות צפייה
כדי לציין את סוג חומת התשלום לתוכן בפעולות צפייה, משתמשים במאפיין
category
במפרט הגישה לפעולה:
"potentialAction": {
"@type":"WatchAction",
"target": { … },
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},
...
}
סוג חומת התשלום לפעולות האזנה
כדי לציין את סוג חומת התשלום של התוכן עבור פעולות האזנה, משתמשים במאפיין
category
באובייקט offer:
"potentialAction": {
"@type":"ListenAction",
"target": { … },
"expectsAcceptanceOf":{
"@type":"Offer",
"category":"subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type":"Country",
"name":"US"
}
},
...
}
אזור גיאוגרפי
צריך לציין את האזורים הגיאוגרפיים שבהם התוכן זמין. אפשר להשתמש באחד מהמאפיינים הבאים או בשניהם:
- המאפיין
eligibleRegion
של אובייקט Action access specification. חובה לציין את המאפיין הזה. - המאפיין
ineligibleRegion
של אובייקט Action access specification.
משתמש יכול לגשת לתוכן אם מיקום המכשיר שלו נמצא באזור כלשהו שצוין ב-eligibleRegion
ולא נמצא באזור כלשהו שצוין ב-ineligibleRegion
.
המאפיינים eligibleRegion
ו-ineligibleRegion
יכולים לקבל את הערכים הבאים:
- רשימה של
Country
,City
ו-State
. - אובייקט
GeoShape
. בקטע מאפייניGeoShape
מפורטות הדרישות. - רשימה של
GeoShape
אובייקטים.
אם התוכן זמין בכל העולם, צריך להשתמש בערך המיוחד הבא של eligibleRegion
:
"eligibleRegion": "EARTH",
תרחישים לדוגמה של eligibleRegion
הנה כמה דוגמאות לתרחישי שימוש במאפיין eligibleRegion
:
- דוגמה 1:
eligibleRegion
עם רשימת מדינות. - דוגמה 2:
eligibleRegion
עם אובייקטGeoShape
שמכיל רשימה של מיקודים. - דוגמה 3:
eligibleRegion
עם אובייקטGeoShape
שמכיל רשימה של קודי FSA (Forward Sortation Area). - דוגמה 4:
eligibleRegion
עם אובייקטGeoShape
שמכיל מזהה DMA. - דוגמה 5:
eligibleRegion
עם רשימה שלGeoShape
אובייקטים. כל אחד מהם מכיל מזהה DMA. - דוגמה 6:
ineligibleRegion
עם מיקודים מושחרים.
דוגמה 1
eligibleRegion
עם רשימת מדינות:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/north_america_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": [ { "@type": "Country", "name": "US" }, { "@type": "Country", "name": "CA" } ] }
דוגמה 2
eligibleRegion
עם אובייקט GeoShape
שמכיל רשימה של מספרי מיקוד:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
דוגמה 3
eligibleRegion
עם אובייקט GeoShape
שמכיל רשימה של קודי FSA (Forward Sortation Area):
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/local_tv_network/subscription" }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area2", "addressCountry": "CA", "postalCode": [ "1A1", "K1A" ] } }
דוגמה 4
eligibleRegion
עם אובייקט GeoShape
שמכיל מזהה DMA:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/abcd/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/abcd/subscription" }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area3", "addressCountry": "US", "identifier": [ { "@type": "PropertyValue", "propertyID": "DMA_ID", "value": "501" } ] } }
דוגמה 5
eligibleRegion
עם רשימה של GeoShape
אובייקטים.
כל אחד מהם מכיל מזהה DMA:
"actionAccessibilityRequirement" : { "@type" : "ActionAccessSpecification", "eligibleRegion" : [ { "@id" : "http://example.com/dma/601", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "601" } }, { "@id" : "http://example.com/dma/602", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "602" } } ] }
דוגמה 6
ineligibleRegion
עם מיקודים מושחרים:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/local_tv_network/subscription" }, "eligibleRegion": { "@type": "Country", "name": "US" }, "ineligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
מזהה זכאות
מזהה הזכאות, entitlementId
, מתייחס למחרוזת שמייצגת גישה לקבוצת תוכן בקטלוג המדיה שלכם. כדי לקבוע אם למשתמש יש גישה לתוכן שלכם, Google מבצעת את הפעולות הבאות:
- אנחנו מבצעים קריאה ל-API אל נקודת הקצה של ההרשאות כדי לקבל את מזהי ההרשאות של המשתמש.
- אנחנו מחפשים את מזהי הזכאות הנדרשים של התוכן בפיד של פעולות המדיה.
- אנחנו מתאימים בין
entitlementId
של משתמש לבין מאפייןidentifier
של אובייקט המינוי למדיה בפיד. אם יש התאמה ללפחותentitlementId
אחד, אנחנו קובעים שהמשתמש יכול לגשת לתוכן.

Google ממליצה להשתמש בתחביר הבא עבור entitlementId
:
<domain name> + colon (:) + <access level to content>
דוגמאות לתחביר:
example.com:basic
example.com:premium
example.com:sports
דוגמה למזהה זכאות
בפיד של MediaExampleCompany מצוין שפריט Movie XYZ
דורש את example.com:basic
entitlementId
, כמו שמוצג כאן:
{ "@context": ["http://schema.org", {"@language": "en"}], "@type": "Movie", "@id": "www.example.com/movie_xyz", "url": "www.example.com/movie_xyz", "name": "Movie XYZ", "potentialAction": { "@type": "WatchAction", "target": [ … ], "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Basic subscription", "commonTier": true ... }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/basic_subscription" }, ... } }, ... }
תרחישים נפוצים לדוגמה לגישה
אלה כמה תרחישי שימוש נפוצים לגישה:
- בחינם (לא נדרשת התחברות): התוכן זמין ללא התחברות, מינוי או רכישה.
- בחינם (נדרשת התחברות): כדי לצפות בתוכן, המשתמשים צריכים להתחבר לחשבון, אבל לא נדרש מינוי.
- מינוי ברמה אחת: נדרש מינוי כדי לצפות בתוכן. כל המנויים יכולים לגשת לאותו תוכן, בין אם מדובר בסרטים או בפרקים, בלי קשר לחבילת המינוי שלהם.
- מינוי בכמה רמות: נדרש מינוי כדי לצפות בתוכן. למנויים יש גישה לתוכן שונה, בין אם מדובר בסרטים או בפרקים, בהתאם לרמת המינוי שלהם. לדוגמה, כסף לעומת זהב.
- מינוי לחבילת תוכן: נדרש מינוי כדי לצפות בתוכן. מנויים יכולים להוסיף תוכן פרימיום למינוי הרגיל שלהם.
- רכישה חד-פעמית: אפשר לרכוש את התוכן, ואז המשתמש יכול לגשת אליו ללא הגבלה.
- טלוויזיה בשידור חי: המינוי כולל גישה לערוצים מקומיים, ארציים וערוצי פרימיום.
- מינוי לצד שלישי: כדי לצפות בתוכן, המשתמש צריך להתחבר לחשבון שלו אצל ספק הכבלים.
ללא תשלום (לא נדרשת כניסה לחשבון)
לא נדרשת התחברות
התוכן זמין ללא התחברות או מינוי.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- מגדירים את
category
להיותnologinrequired
. - לא לכלול את
expectAcceptanceOf
.
בחינם (נדרשת התחברות)
נדרשת התחברות
התוכן מחייב את המשתמשים להתחבר אבל לא מחייב מינוי.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- מגדירים את
category
להיותfree
. - לא לכלול את
expectAcceptanceOf
.
מינוי ברמה אחת
במודל מינויים עם רמה אחת, לספק שירות יש רמת מינוי אחת. לכל המנויים יש גישה לאותו תוכן, בין אם מדובר בסרטים או בפרקים, בלי קשר לחבילת המינוי שלהם.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription": { "@type": "MediaSubscription", "name": "Example Package", "commonTier": true, "@id": "http://www.example.com/example_package" }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/example_package" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
מינוי עם כמה רמות
במודל מינוי מדורג, לספק שירות יש כמה רמות מינוי, כמו Gold, Silver ו-Bronze. למשתמשים שיש להם מינוי לרמה הגבוהה יותר יש גישה לכל התוכן ברמה הנמוכה יותר. עם זאת, משתמשים שיש להם מינוי לרמה הנמוכה יותר לא יכולים לגשת לתוכן ברמה הגבוהה יותר.

למשל, נבחן את התרחיש הבא:
- דנה נרשמת למינוי לרמת Gold. נקודת הקצה של ההרשאות שלכם מחזירה את המזהים הבאים של
entitlementId
:example.com:bronze
example.com:silver
example.com:gold
- יוסי נרשם למינוי ברמה Bronze. נקודת הקצה של ההרשאות מחזירה את הערכים הבאים
entitlementId
:example.com:bronze
- בפיד של הפעולות במדיה מפורטות הדרישות הבאות:
- סרט א' דורש
example.com:bronze
. - סרט ב' דורש
example.com:silver
.
- סרט א' דורש
בתרחיש הזה, Google קובעת את רמות הגישה הבאות עבור Jane ו-John:
- גם ליוני וגם לדני יש גישה לסרט א'.
- לרחל יש גישה לסרט ב', אבל למשה אין.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/basic_subscription" }, ... } }
מינוי לחבילת ערוצים
במודל מינוי לחבילות ערוצים, ספק שירותים מאפשר למשתמשים להרחיב את ההרשאות שלהם ולהוסיף ערוצים למינוי הבסיסי. המשתמשים יכולים להוסיף כמה ערוצים שהם רוצים.

למשל, נבחן את התרחיש הבא:
- לעדי יש מינוי ל-PRO ול-Sportz בנוסף למינוי Basic. נקודת הקצה של ההרשאות מחזירה את המזהים הבאים של
entitlementId
:example.com:basic
example.com:pro
example.com:sportz
- לעומת זאת, ליוסי יש מינוי בסיסי בלבד. נקודת הקצה של ההרשאות מחזירה את הערכים הבאים
entitlementId
:example.com:basic
- בפיד של הפעולות במדיה מפורטות הדרישות הבאות:
- סרט א' דורש
example.com:basic
. - סרט ב' דורש
example.com:pro
.
- סרט א' דורש
בתרחיש הזה, Google קובעת את רמות הגישה הבאות עבור Jane ו-John:
- גם ליוני וגם לדני יש גישה לסרט א'.
- לרחל יש גישה לסרט ב', אבל למשה אין.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } "requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false } ], "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/package/basic" }, } } }
רכישה חד-פעמית
רכישה
התוכן זמין ללא הגבלת זמן אחרי הרכישה.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "purchase", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
- מגדירים את
category
להיותpurchase
. - כוללים את
expectAcceptanceOf
ב-actionAccessibilityRequirement
כדי לציין את מחיר הרכישה.
השכרה
התוכן זמין למשך זמן מוגבל אחרי הרכישה.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "rental", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
- מגדירים את
category
להיותrental
. - כוללים את
expectAcceptanceOf
ב-actionAccessibilityRequirement
כדי לציין את מחיר ההשאלה.
טלוויזיה בשידור חי
בפיד של פעולות מדיה, אפשר להגביל את הגישה לערוץ או לאירוע של טלוויזיה בשידור חי על סמך שני תנאי משתמשים:
-
מיקום המכשיר של המשתמש
כדי להגביל את הגישה לערוץ הטלוויזיה, מציינים את האזור שבו למשתמשים יש גישה אליו. התנאי הזה חל בדרך כלל על ערוצי טלוויזיה מקומיים.
-
הסטטוס של חשבון המשתמש
אם הגישה לערוץ טלוויזיה תלויה בהגדרה ברמת החשבון של המשתמש, צריך להשתמש במזהי זכאות כדי לייצג את ההגבלה.
התנאי הזה בדרך כלל חל על תרחישי השימוש הבאים:
- חבילה: ערוצים ארציים נכללים לרוב בחבילות, והמשתמשים בוחרים לאיזו חבילה הם רוצים להירשם.
- חבילת ערוצים: בחלק מהערוצים בתשלום, המשתמשים צריכים לבחור ערוצים נוספים למינוי שלהם.
- ערוץ ספורט אזורי (RSN): ערוצי ספורט אזוריים משויכים בדרך כלל למיקום הבית של המשתמש. המשתמשים יכולים לצפות בתוכן בערוץ הספורט האזורי גם כשהם נוסעים מחוץ למיקום הבית שלהם.
מינוי של צד שלישי
מינוי של צד שלישי
התוכן זמין למנויים משירות אחר.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "externalsubscription" "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription":{ "@type": "MediaSubscription", "@id": "https://www.example.com/faq", "name": "Example", "sameAs": "https://www.example.com/faq", "authenticator": { "@type": "Organization", "name": "TVE" } }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/faq" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
- מוסיפים
authenticator
כדי לציין ששירות אחר מאמת את המנויים. לדוגמה, כדי לצפות ב-HBO GO צריך מינוי מספק הכבלים.
חבילות נפוצות
תוכן ברמה נפוצה זמין לכל המנויים, ללא קשר לחבילת המינוי שלהם. הסיווג הנפוץ חל על כל התוכן עם הסיווג category
של subscription
. מידע נוסף על המאפיין category
זמין בקטע סוג חומת תשלום.
למה נדרשת חבילה ברמה משותפת?
מספר מוצרים של Google מספקים למשתמשים המלצות לצפייה בטלוויזיה ובסרטים, כולל חיפוש Google, Android TV ו-Google Assistant. כדי להגדיר את ציפיות המשתמשים לגבי העלות, Google צריכה להבין איזה תוכן זמין לכל המנויים באמצעות השימוש בחבילה המשותפת. בנוסף, Google צריכה להבין איזה תוכן זמין למנויים עם חבילות מינוי ספציפיות.
Google ממליצה על תכנים שזמינים ברמה המשותפת, אלא אם אתם תומכים בEntitlement API. ממשק ה-API מאפשר ל-Google להבין לאילו תכנים שאינם ברמה הנפוצה יש לכל משתמש ספציפי גישה.
מתי כדאי ליצור חבילה משותפת?
חבילת ערוצים נפוצה נדרשת אם השירות שלכם מציע תוכן שזמין לכל המנויים. הסעיף הזה כולל שירותים שמציעים רק חבילה אחת ושירותים שמציעים כמה חבילות או תוספים.
ספקים שאין להם תוכן שזמין לכל המנויים לא צריכים ליצור חבילה משותפת. דוגמה לכך היא ספקי שירות שמספקים תוכן בלעדי בכל החבילות שלהם.
דוגמאות נפוצות לרמות
אלה דוגמאות לשימוש בתוכנית הנפוצה.
מינוי עם רמות שונות
במודל מינוי מדורג, לספק שירות יש כמה רמות מינוי, כמו רמות זהב, כסף וארד. למשתמשים עם מינוי ברמה גבוהה יותר יש גישה לכל התוכן ברמות הנמוכות יותר. למשתמשים עם מינוי ברמה נמוכה יותר אין גישה לתוכן ברמה גבוהה יותר. בתמונה הבאה אפשר לראות דוגמה למבנה החבילה.

בדוגמת הקוד הבאה, חבילת הברונזה היא הרמה המשותפת כי לכל המשתמשים יש גישה לכל התוכן ברמה הזו.
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/bronze", "name": "Bronze", "sameAs": "https://www.example.com/package/bronze", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/silver", "name": "Silver", "sameAs": "https://www.example.com/package/silver", "identifier": "example.com:silver", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/gold", "name": "Gold", "sameAs": "https://www.example.com/package/gold", "identifier": "example.com:gold", "commonTier": false } ],
תוספים
במודל מינוי של חבילות ערוצים, ספק שירותים מאפשר למשתמשים להרחיב את הזכויות שלהם ולהוסיף ערוצים למינוי בסיסי. המשתמשים יכולים להוסיף כמה ערוצים שהם רוצים. בתמונה הבאה מוצגת דוגמה למבנה החבילה.

אם יש לכם ערוץ שזמין לכל המשתמשים ולא כרוך בתשלום, אתם יכולים למזג את חבילת הערוצים עם חבילת הערוצים המשותפת.
בדוגמת הקוד הבאה, חבילת הבסיס היא הרמה הנפוצה כי לכל המשתמשים יש גישה לכל התוכן בחבילה הזו.
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/moviemax", "name": "Moviemax", "sameAs": "https://www.example.com/package/moviemax", "identifier": "example.com:moviemax", "commonTier": false } ],
חבילות עם תוכן חופף
במודל תוכן שבו יש חפיפה בין התוכן בחבילות, ספק שירותים מוכר חבילות שכוללות חלק מהתוכן מחבילות אחרות. בתמונה הבאה אפשר לראות דוגמה למבנה החבילה.

בדוגמת הקוד הבאה, הספק מציע שלוש חבילות שחלק מהתוכן שלהן חופף. במקרה כזה, נדרש חבילה רביעית שמייצגת את הרמה המשותפת. היא צריכה לכלול את כל התוכן שזמין בכל שלוש החבילות.
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/common", "name": "Common Tier Package", "sameAs": "https://www.example.com/package/common", "commonTier": true } ],
חבילות ללא תוכן חופף
במודל תוכן שבו אין חפיפה בין חבילות התוכן, ספק השירות מוכר חבילות שלא כוללות תוכן מחבילות אחרות. בתמונה הבאה אפשר לראות דוגמה למבנה החבילה.

בדוגמה הבאה, הספק מציע שלוש חבילות ללא חפיפה בתוכן בין החבילות. לא נדרש חבילת ערוצים משותפת.
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false } ],
נקודת קצה של הרשאות
אפשר להשתמש במידע שבקטע הזה כדי לארח נקודת קצה מסוג HTTPS שמחזירה את ההרשאות שמשויכות למשתמש.
דרישות מוקדמות
לפני שמתחילים, צריך לוודא שהשירות תומך בתהליך OAuth 2.0 עם Google.
בקשה
כדי לקבל את ההרשאות של המשתמש, Google שולחת בקשה שמכילה את טוקן ה-OAuth של המשתמש. נקודת הקצה צריכה לזהות את המשתמש על סמך טוקן ה-OAuth הזה. מקרה לדוגמה:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
תשובה
נקודת הקצה (endpoint) צריכה להחזיר תגובה עם המאפיינים הבאים:
נכס | |
---|---|
subscription |
חובה זהו שדה בתוך תגובת הבסיס. |
subscription.type |
חובה המאפיין הזה יכול לקבל את הערכים הבאים:
|
subscription.expiration_date |
אופציונלי תאריך התפוגה של זכות השימוש הזו, בפורמט ISO 8601, כולל אזור הזמן. פרטים נוספים זמינים במאמר בנושא תאריכי תפוגה. |
entitlements |
אופציונלי מאפיין הבסיס הזה מכיל את הערכים של |
entitlements.entitlement |
חובה אם הגישה לקטלוג הסטרימינג משתנה בהתאם לסוג המינוי. הנכס הזה מכיל את |
entitlements.expiration_date |
אופציונלי תאריך התפוגה של המינוי הזה, בפורמט ISO 8601, כולל אזור הזמן. פרטים נוספים זמינים במאמר בנושא תאריכי תפוגה. |
תאריכי תפוגה
יש שני מאפיינים בתגובה של נקודת קצה שקשורים לתאריכי תפוגה: subscription.expiration_date
ו-entitlements.expiration_date
. אפשר לכלול אחד מהם או לא לכלול אף אחד מהם, אבל לא את שניהם. הבחירה באיזה מהם להשתמש תלויה במודל המינוי שלכם.
מודל מינוי | |
---|---|
הגישה לקטלוג התכנים בסטרימינג זהה לכל המנויים. | לא צריך לציין את המאפיין entitlements , אלא רק את subscription.expiration_date . |
הגישה לקטלוג הסטרימינג משתנה בהתאם לפרטי המינוי של המשתמש. |
אם מודל המינוי שלכם כולל כמה רמות או חבילות שמתבטלות עם הזמן, אתם יכולים לבצע אחת מהפעולות הבאות:
|
תגובות לדוגמה
אלה דוגמאות לתגובות שמייצגות מצבי מינוי שונים:
- הרשמה פעילה
- מינוי פעיל עם תאריך תפוגה
- בלי מינוי
- מינויים פעילים לכמה רמות או חבילות
הרשמה פעילה
מינוי פעיל
למשתמש יש מינוי פעיל ל-example.com. במקרה הזה, לכל המנויים יש גישה לכל קטלוג התוכן לסטרימינג, בלי קשר לסוג המינוי.
{ "subscription" : { "type": "ActiveSubscription", } }
מינוי פעיל עם תאריך תפוגה
מינוי פעיל עם תאריך תפוגה
למשתמש יש מינוי פעיל ל-example.com, ולמינוי יש תאריך תפוגה. במקרה כזה, לכל המנויים יש גישה לקטלוג המלא של התוכן בסטרימינג, בלי קשר לסוג המינוי שלהם.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
בלי מינוי
אין מינוי
למשתמש אין מינוי ל-example.com.
{ "subscription" : { "type": "InactiveSubscription" } }
מינויים פעילים לכמה רמות או חבילות
מינויים פעילים למספר רמות או חבילות
למשתמש יש מינוי ל-example.com:premium
עד תאריך מסוים.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
מגבלת קצב
Google מעדכנת את פרטי ההרשאות של המשתמש כל שש שעות. כדי להחליק את מספר השאילתות המקסימלי לשנייה (QPS), Google מחלקת את השאילתות לנקודת הקצה באופן שווה לאורך זמן. לכן, אפשר להעריך את ממוצע השאילתות הצפוי לשנייה עבור נקודת הקצה באמצעות הנוסחה הבאה:
המספר הממוצע הצפוי של שאילתות לשנייה = <מספר המשתמשים הכולל> / 21,600 שניות (6 שעות × 60 דקות × 60 שניות)
אם אתם תומכים במספר גדול של משתמשים, Google יכולה לשנות את המרווח של 6 השעות. אם יש צורך, אפשר לפנות אל Google כדי לדון בהגדרות.
צור קשר עם Google
כשהנקודה מוכנה, צריך לפנות אל Google כדי לעדכן את כתובת ה-URL של נקודת הקצה.
מאפיינים של הגדרת גישה לפעולה
מידע נוסף זמין בקטע מאפיינים של מפרט גישה לפעולה.