דרישות לקבלת גישה

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

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

זיהוי דרישות גישה לתוכן

עליכם לזהות את דרישת הגישה לכל חבילת תוכן בקטלוג שלכם. מה כדאי לקחת בחשבון אם עושים את זה?

  • האם משתמשים צריכים להתחבר לאפליקציה או לפלטפורמה שלך כדי לגשת לתוכן?
  • האם משתמשים צריכים מינוי?

    פעולות צפייה בלבד:

    • האם משתמשים צריכים מינוי מספק שירות חיצוני?
    • האם אתם מציעים מינוי רב-שכבתי, חבילה מרובה או תוסף?
  • פעולות צפייה בלבד: האם משתמשים צריכים לשכור או לרכוש את התוכן?

  • האם דרישת הגישה משתנה לאורך הזמן?

  • האם דרישת הגישה תלויה במיקום המכשיר?

סוגים של הגבלות גישה

יש שני סוגים של הגבלות גישה:

סוג חומת תשלום

אפשר להגביל את הגישה לתוכן לפי סוג חומת התשלום. בטבלה הבאה מפורטים הסוגים השונים של חומת התשלום:

סוג חומת תשלום דוגמה קטגוריה
אין צורך לבצע רכישה או התחברות. רשרוש nologinrequired
המשתמש חייב להיות מחובר, אבל אין צורך במינוי בתשלום. Vudu (AVOD) free
למשתמש חייב להיות מינוי פעיל. הגישה לא תלויה ברמת המינוי. Netflix

subscription

למשתמש חייב להיות מינוי פעיל. הגישה תלויה ברמת המינוי. Hulu (תוספים)

subscription

התוכן יהיה זמין לזמן מוגבל לאחר הרכישה. 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 באובייקט המבצע:

"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 ולא נמצא באזור כלשהו שצוין ב-ineligibleRegion.

המאפיינים eligibleRegion ו-ineligibleRegion מאפשרים את הערכים הבאים:

אם התוכן זמין בכל העולם, יש להשתמש בערך המיוחד הבא עבור eligibleRegion:

"eligibleRegion": "EARTH",

תרחישי שימוש כשירים באזור

הבא דוגמאות לתרחישים של המאפיין eligibleRegion:

  • דוגמה 1: eligibleRegion עם רשימת מדינות.
  • דוגמה 2: eligibleRegion עם אובייקט GeoShape שמכיל רשימה של מספרי מיקוד.
  • דוגמה 3: eligibleRegion עם אובייקט GeoShape שמכיל רשימה של קודי אזור למיון קדימה (FSA).
  • דוגמה 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):


"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/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
  },
  "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
  },
 "eligibleRegion":   {
      "@type": "Country",
      "name": "US"
    },
  "ineligibleRegion": {
    "@type": "GeoShape",
    "@id": "http://example.com/area1",
    "addressCountry": "US",
    "postalCode": [
      "94118",
      "94119"
    ]
  }
}

מזהה הרשאה

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

  1. אנחנו מבצעים קריאת API לנקודת הקצה של הרשאות כדי לקבל את מזהי ההרשאות של המשתמש.
  2. אנחנו מחפשים את מזהי ההרשאה הנדרשים של התוכן מהפיד של פעולות המדיה.
  3. אנחנו מתאימים את ה-entitlementId של המשתמש לנכס של identifier האובייקט של מינוי המדיה בפיד. אם יש התאמה אחת (entitlementId) לפחות, אנחנו קובעים שהמשתמש יכול לגשת לתוכן.
איור 2. אחד ממזהי ההרשאות של המשתמש תואם למזהה ההרשאה הנדרש של התוכן.

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
        ...
      },
      ...
    }
  },
  ...
}

תרחישים נפוצים לדוגמה של גישה

דוגמאות לשימושים נפוצים בגישה:

  • בחינם (אין צורך בהתחברות): התוכן זמין ללא התחברות, מינוי או רכישה.
  • בחינם (נדרשת התחברות): התוכן מחייב התחברות למשתמשים, אבל לא מחייב מינוי.
  • מינוי לרמה אחת: התוכן מחייב מינוי. כל המנויים יכולים לגשת לאותו תוכן, בין אם הם סרטים או פרקים, ללא קשר לחבילת המינוי שלהם.
  • מינוי רב-שכבתי: התוכן דורש מינוי. מנויים יכולים לגשת לתוכן שונה, לפרקים או לפרקים, בהתאם לרמת המינוי שלהם. לדוגמה, Silver לעומת Gold.
  • מינוי לתוסף: התוכן מצריך מינוי. מנויים יכולים להוסיף תוכן פרימיום בנוסף למינוי הרגיל שלהם.
  • רכישה חד-פעמית: ניתן לרכוש את התוכן ולאחר מכן המשתמש יכול לגשת אליו ללא הגבלת זמן.
  • טלוויזיה בשידור חי: מינוי כולל גישה לערוצים מקומיים, לערוצים לאומיים ולערוצי פרימיום.
  • מינוי של צד שלישי: התוכן מחייב את המשתמש להתחבר דרך ספק הכבלים שלו.

בחינם (אין צורך בהתחברות)

לא נדרשת התחברות

התוכן זמין ללא התחברות או מינוי.


{
  "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"
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

מינוי רב-שכבתי

במודל מינויים רב-שכבתי, ספק שירות כולל כמה רמות מינויים, כגון זהב, כסף וארד. משתמשים עם המינוי ברמה העליונה יכולים לגשת לכל התוכן ברמה התחתונה. עם זאת, למשתמשים שיש להם את המינוי ברמה הנמוכה ביותר אין גישה לתוכן ברמה העליונה.

איור 3. מודל מינוי מדורג וייצוג של הרשאות.

תרחיש לדוגמה:

  • ג'יין נרשמת לרמת זהב. נקודת הקצה של ההרשאות מחזירה את המזהים הבאים של entitlementId:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • יוסי נרשם לרמת ארד. נקודת הקצה של ההרשאות מחזירה את התאריך entitlementId הבא:
    • example.com:bronze
  • פיד פעולות המדיה מתאר את הדרישות הבאות:
    • הסרט A דורש example.com:bronze.
    • הסרט B מחייב example.com:silver.

בתרחיש הזה, Google קובעת את רמות הגישה הבאות לג'יין ולג'ון:

  • לג'יין ולג'ון יש גישה לסרט א'.
  • לג'יין יש גישה לסרט ב', אבל לג'ון אין גישה אליו.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

מינוי לתוסף

במודל מינויים לתוספים, ספק שירות מאפשר למשתמשים להרחיב את ההרשאות שלהם ולהוסיף ערוצים למינוי בסיסי. למשתמשים יש אפשרות להוסיף כמה ערוצים שהם רוצים.

איור 4. מודל מינויים לתוספים וייצוג של ההרשאות.

תרחיש לדוגמה:

  • לג'יין יש PRO ו-Sportz בנוסף למינוי בסיסי. נקודת הקצה של ההרשאות שלך מחזירה את המזהים הבאים של entitlementId:
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • לג'ון יש רק את המינוי הבסיסי. נקודת הקצה של ההרשאות מחזירה את התאריך entitlementId הבא:
    • example.com:basic
  • פיד פעולות המדיה מתאר את הדרישות הבאות:
    • הסרט A דורש example.com:basic.
    • הסרט B מחייב example.com:pro.

בתרחיש הזה, Google קובעת את רמות הגישה הבאות לג'יין ולג'ון:

  • לג'יין ולג'ון יש גישה לסרט א'.
  • לג'יין יש גישה לסרט ב', אבל לג'ון אין גישה אליו.
{
  "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
        }
    }
  }
}

רכישה חד פעמית

קנה

התוכן יהיה זמין למשך זמן בלתי מוגבל אחרי הרכישה.


{
  "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): בדרך כלל, רשתות RSN משויכות למיקום ה"בית" של המשתמש. משתמשים יכולים לצפות בתוכן ב-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"
      }
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • הוספה של authenticator כדי לציין ששירות אחר מאמת את המנויים. לדוגמה, ב-HBO GO נדרש מינוי מספק הכבלים.

חבילות רב-שכבתיות

תוכן ברמה רגילה זמין לכל המנויים, ללא קשר לחבילת המינוי. המסלול הרגיל חל על כל התוכן עם הערך category של subscription. למידע נוסף על הנכס category, עיינו בקטע סוג חומת תשלום.

למה נדרשת חבילה נפוצה של רמות?

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

Google ממליצה על כותרים שזמינים במסלולים המשותפים, אלא אם אתם תומכים ב-Authorized API. ממשק ה-API מאפשר ל-Google להבין את השמות הלא נפוצים שכל משתמש ספציפי יכול לגשת אליהם.

מתי כדאי ליצור חבילה משותפת?

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

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

דוגמאות במסלולים נפוצים

הנה כמה דוגמאות למסלול הרגיל.

מינוי מדורג

במודל מינויים רב-שכבתי, ספק שירות כולל כמה רמות מינויים, כגון זהב, כסף וארד. למשתמשים עם המינוי ברמה העליונה יש גישה לכל התוכן ברמות הנמוכות יותר. למשתמשים עם המינוי ברמה הנמוכה אין גישה לתוכן ברמה העליונה. התמונה הבאה היא דוגמה למבנה החבילה.

רמת &#39;זהב&#39; מכילה את כל התוכן של רמת &#39;כסף&#39;, שהיא
            מכילה את כל שכבת הארד.
איור 5. מבנה של חבילת מינויים מדורג.

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

"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
    }
  ],

תוספים

במודל מינויים לתוספים, ספק שירות מאפשר למשתמשים להרחיב את ההרשאות שלהם ולהוסיף ערוצים למינוי בסיסי. המשתמשים יכולים להוסיף ערוצים רבים ככל שירצו. התמונה הבאה היא דוגמה למבנה החבילות.

כל משתמש מתחיל עם ערוץ Basic, והוא יכול לבחור להוסיף
            כל שילוב של ערוצי ה-PRO, Sportz ו-Moviemax.
איור 6. מבנה חבילת המינויים באמצעות תוספים.

אם יש לכם ערוץ שזמין לכל המשתמשים, ללא עלות לערוץ, תוכלו למזג את החבילה עם החבילה של שכבה משותפת.

בדוגמה הבאה של הקוד, החבילה הבסיסית היא הרמה המשותפת, מכיוון שלכל המשתמשים יש גישה לכל התוכן בחבילה הזו.

"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
    }
  ],

חבילות עם תוכן שמצטלב

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

תרשים ון שבו החפיפה בין חבילות 1, 2 ו-3 מסומנת בתווית &#39;רמה משותפת&#39;.
איור 7. מבנה חבילה עם תוכן מצטלב.

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

"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
    }
  ],

חבילות ללא תוכן שמצטלב

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

חבילות 1, 2 ו-3 נפרדות לחלוטין.
איור 8. מבנה החבילה ללא תוכן חוצה.

בדוגמה הבאה, הספק מציע שלוש חבילות ללא תוכן הצטלב בין כל החבילות. אין צורך בחבילה משותפת של רמות.

"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>

תשובה

נקודת הקצה צריכה להחזיר תגובה עם המאפיינים הבאים:

מאפיין (property)
subscription

נדרש

זהו שדה בתוך התגובה הבסיסית.

subscription.type

נדרש

הנכס הזה יכול לכלול את הערכים הבאים:

  • ActiveSubscription: למשתמש יש מינוי פעיל לספק.
  • ActiveTrial: למשתמש יש תקופת ניסיון פעילה אצל הספק.
  • InactiveSubscription: למשתמש אין מינוי פעיל או תקופת ניסיון פעילה.
subscription.expiration_date

אופציונלי

תאריך התפוגה של ההרשאה הזאת בפורמט ISO 8601 שכולל את אזור הזמן. מידע נוסף זמין במאמר תאריכי תפוגה.

entitlements

אופציונלי

נכס הבסיס הזה מכיל את ערכי entitlementId שהמשתמש מחזיק.

entitlements.entitlement

חובה אם הגישה לקטלוג הסטרימינג משתנה בהתאם לסוג המינוי.

הנכס הזה כולל את entitlementId. למידע נוסף, ניתן לעיין במאמר מזהה הרשאה.

entitlements.expiration_date

אופציונלי

תאריך התפוגה של המינוי, בפורמט ISO 8601, שכולל את אזור הזמן. מידע נוסף זמין במאמר תאריכי תפוגה.

תאריכי תפוגה

בתגובה לתגובה יש שני נכסים שנוגעים לתאריכי תפוגה: subscription.expiration_date ו-entitlements.expiration_date. אפשר לכלול אחד מהם או את שניהם, אבל לא את שניהם. בחירת הערוצים תלויה במודל המינוי.

מודל המינוי
הגישה לקטלוג הסטרימינג זהה לכל המנויים. כי אין צורך לציין את המאפיין entitlements, צריך לציין subscription.expiration_date.

הגישה לקטלוג הסטרימינג משתנה בהתאם לפרטי המינוי של המשתמש.

אם למודל המינוי יש כמה שכבות או תוספים שהתוקף שלהם פג לאורך זמן, יש לבצע את אחת מהפעולות הבאות:

  • אם התוקף של כל ערכי entitlements.entitlement יפוג בו-זמנית, עליך לציין subscription.expiration_date.
  • אם התוקף של ערכי entitlements.entitlement מסוימים פג במועדים שונים, צריך לציין entitlements.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 מחלקת את השאילתות לנקודת הקצה שלכם באופן שווה לאורך הזמן. לכן, ניתן להעריך את ה-QPS הממוצע הממוצע של נקודת הקצה שלכם באמצעות הנוסחה הבאה:

ההכנסה הממוצעת הצפויה למשתמש = <מספר כולל של משתמשים> / 21,600 שניות (6 שעות x 60 דקות x 60 שניות)

אם אתם תומכים במספר גדול של משתמשים, Google יכולה להתאים את מרווח השעות של 6 שעות. במקרה הצורך, יש ליצור קשר עם Google כדי לדון בתצורה.

יצירת קשר עם Google

כשנקודת הקצה מוכנה, צריך לפנות ל-Google כדי לעדכן את כתובת ה-URL של נקודת הקצה.

מאפייני מפרט של גישה לפעולה

למידע נוסף, עיינו בקטע מאפיינים של מפרט הגישה לפעולה.