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

המשתמשים מעדיפים לצפות בתוכן או להאזין לתוכן שכבר יש להם גישה אליו, כמו תוכן של מינוי קיים. אם 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 באובייקט 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 ולא נמצא באזור כלשהו שצוין ב-ineligibleRegion.

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

אם התוכן זמין בכל העולם, צריך להשתמש בערך המיוחד הבא של 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 מבצעת את הפעולות הבאות:

  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
        ...
      },
      "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. למשתמשים שיש להם מינוי לרמה הגבוהה יותר יש גישה לכל התוכן ברמה הנמוכה יותר. עם זאת, משתמשים שיש להם מינוי לרמה הנמוכה יותר לא יכולים לגשת לתוכן ברמה הגבוהה יותר.

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

למשל, נבחן את התרחיש הבא:

  • דנה נרשמת למינוי לרמת 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"
    },
    ...
  }
}

מינוי לחבילת ערוצים

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

איור 4. מודל מינוי לחבילות ערוצים והייצוג שלו של זכויות גישה.

למשל, נבחן את התרחיש הבא:

  • לעדי יש מינוי ל-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 להבין לאילו תכנים שאינם ברמה הנפוצה יש לכל משתמש ספציפי גישה.

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

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

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

דוגמאות נפוצות לרמות

אלה דוגמאות לשימוש בתוכנית הנפוצה.

מינוי עם רמות שונות

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

רמת הזהב כוללת את כל התוכן של רמת הכסף, שכוללת את כל התוכן של רמת הארד.
איור 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
    }
  ],

תוספים

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

כל משתמש מתחיל עם הערוץ הבסיסי, ויכול לבחור להוסיף כל שילוב של הערוצים 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 מסומנת בתווית Common Tier (רמה משותפת).
איור 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>

תשובה

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

נכס
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 מחלקת את השאילתות לנקודת הקצה באופן שווה לאורך זמן. לכן, אפשר להעריך את ממוצע השאילתות הצפוי לשנייה עבור נקודת הקצה באמצעות הנוסחה הבאה:

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

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

צור קשר עם Google

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

מאפיינים של הגדרת גישה לפעולה

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