الزامات دسترسی

کاربران ترجیح می دهند محتوایی را که قبلاً می توانند به آن دسترسی داشته باشند، مانند محتوای اشتراک موجود خود، تماشا یا گوش دهند. اگر Google بداند کاربر به چه محتوایی در برنامه یا پلتفرم شما می‌تواند دسترسی داشته باشد، گوگل می‌تواند نتیجه جستجو یا پاسخ بهتری برای هدایت کاربر به آن محتوا ایجاد کند.

شکل 1. الزامات دسترسی به مشترکین شما کمک می کند تا به محتوای برنامه یا پلت فرم شما دسترسی داشته باشند.

الزامات دسترسی به محتوا را شناسایی کنید

شما باید الزامات دسترسی برای هر بسته محتوا را در کاتالوگ خود مشخص کنید. هنگامی که این کار را انجام می دهید، به سؤالات زیر توجه کنید:

  • آیا کاربران برای دسترسی به محتوا نیاز به ورود به برنامه یا پلتفرم شما دارند؟
  • آیا کاربران نیاز به اشتراک دارند؟

    فقط Watch Actions:

    • آیا کاربران نیاز به اشتراک از یک ارائه دهنده خدمات خارجی دارند؟
    • آیا اشتراک چند بسته ای یا افزودنی ارائه می دهید؟
  • فقط Watch Actions: آیا کاربران نیاز به اجاره یا خرید محتوا دارند؟

  • آیا الزامات دسترسی در طول زمان تغییر می کند؟

  • آیا نیاز دسترسی به مکان دستگاه بستگی دارد؟

انواع محدودیت دسترسی

دو نوع محدودیت دسترسی وجود دارد:

نوع Paywall

شما می توانید دسترسی به محتوا را بر اساس نوع دیوار پرداخت آن محدود کنید. جدول زیر انواع مختلف paywall را توضیح می دهد:

نوع Paywall مثال دسته بندی
نیازی به خرید یا ورود به سیستم نیست. ترق nologinrequired
کاربر باید وارد سیستم شده باشد، اما نیازی به اشتراک پولی ندارد. وودو (AVOD) free
کاربر باید اشتراک فعال داشته باشد. دسترسی مستقل از ردیف اشتراک است. نتفلیکس

subscription

کاربر باید اشتراک فعال داشته باشد. دسترسی به سطح اشتراک بستگی دارد. Hulu (افزونه ها)

subscription

محتوا پس از خرید برای مدت زمان محدودی در دسترس است. وودو rental
محتوا پس از خرید برای مدت نامحدودی در دسترس است. وودو purchase
محتوا با اشتراک کابلی در دسترس است. HBO برو externalSubscription

نوع Paywall برای Watch Actions

برای تعیین نوع دیوار پرداخت محتوا برای Watch Actions، از ویژگی category در مشخصات دسترسی Action استفاده کنید :

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

نوع Paywall برای Listen Actions

برای تعیین نوع دیوار پرداخت محتوا برای Listen Actions، از ویژگی 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 ، entitlementId به رشته ای اشاره دارد که نشان دهنده دسترسی به گروهی از محتوا در کاتالوگ رسانه شما است. برای تعیین اینکه آیا کاربر به محتوای شما دسترسی دارد یا خیر، Google مراحل زیر را انجام می دهد:

  1. ما یک تماس API با نقطه پایانی حقوق شما برقرار می‌کنیم تا شناسه‌های حق کاربر را دریافت کنیم.
  2. ما شناسه‌های حق مورد نیاز محتوا را از فید Media Actions شما جستجو می‌کنیم.
  3. ما entitlementId کاربر را با ویژگی identifier شی اشتراک رسانه در فید شما مطابقت می دهیم. اگر حداقل یک entitlementId مطابقت داشته باشد، تعیین می کنیم که کاربر می تواند به محتوا دسترسی داشته باشد.
شکل 2. یکی از شناسه های حق کاربر با شناسه حق مورد نیاز محتوا مطابقت دارد.

گوگل توصیه می کند که از نحو زیر برای 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
        ...
      },
      ...
    }
  },
  ...
}

موارد استفاده مشترک دسترسی

موارد زیر موارد استفاده رایج دسترسی هستند:

  • رایگان (بدون نیاز به ورود): محتوا بدون ورود، اشتراک یا خرید در دسترس است.
  • رایگان (لازم به ورود): محتوا نیاز به ورود کاربران دارد اما نیازی به اشتراک ندارد.
  • اشتراک تک لایه: محتوا نیاز به اشتراک دارد. همه مشترکین بدون در نظر گرفتن بسته اشتراک خود می توانند به محتوای یکسانی، چه فیلم و چه قسمت دسترسی داشته باشند.
  • اشتراک چند لایه: محتوا نیاز به اشتراک دارد. مشترکین می توانند بر اساس سطح اشتراک خود به محتوای مختلف، اعم از فیلم یا قسمت دسترسی داشته باشند. به عنوان مثال، نقره در مقابل طلا .
  • اشتراک افزودنی: محتوا نیاز به اشتراک دارد. مشترکین می توانند محتوای ممتاز را در بالای اشتراک معمولی خود اضافه کنند.
  • خرید یکباره: محتوا را می توان خریداری کرد و پس از آن کاربر می تواند به طور نامحدود به آن دسترسی داشته باشد.
  • تلویزیون زنده: اشتراک شامل دسترسی به کانال های محلی، ملی و ممتاز است.
  • اشتراک شخص ثالث: محتوا از کاربر می خواهد که با ارائه دهنده کابل خود وارد شود.

رایگان (بدون نیاز به ورود)

بدون نیاز به ورود

محتوا بدون ورود یا اشتراک در دسترس است.


{
  "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 شما شناسه های entitlementId زیر را برمی گرداند:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • جان مشترک ردیف برنز است. نقطه پایانی entitlementId شما entitlementId زیر را برمی‌گرداند:
    • example.com:bronze
  • فید Media Actions شما شرایط زیر را شرح می‌دهد:
    • فیلم A به example.com:bronze نیاز دارد.
    • فیلم B به example.com:silver نیاز دارد.

در این سناریو، گوگل سطوح دسترسی زیر را برای جین و جان تعیین می کند:

  • جین و جان هر دو به فیلم A دسترسی دارند.
  • جین به فیلم B دسترسی دارد، اما جان دسترسی ندارد.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

اشتراک افزونه

در یک مدل اشتراک افزودنی، یک ارائه‌دهنده خدمات به کاربران اجازه می‌دهد تا حقوق خود را گسترش دهند و کانال‌هایی را به اشتراک پایه اضافه کنند. کاربران می توانند هر تعداد کانال که می خواهند اضافه کنند.

شکل 4. یک مدل اشتراک افزودنی و نمایش آن از حقوق.

سناریوی زیر را در نظر بگیرید:

  • جین علاوه بر اشتراک پایه ، PRO و Sportz را نیز دارد. نقطه پایانی entitlementId شما شناسه های entitlementId زیر را برمی گرداند:
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • جان فقط اشتراک Basic را دارد. نقطه پایانی entitlementId شما entitlementId زیر را برمی‌گرداند:
    • example.com:basic
  • فید Media Actions شما شرایط زیر را شرح می‌دهد:
    • فیلم A به example.com:basic نیاز دارد.
    • فیلم B به example.com:pro نیاز دارد.

در این سناریو، گوگل سطوح دسترسی زیر را برای جین و جان تعیین می کند:

  • جین و جان هر دو به فیلم A دسترسی دارند.
  • جین به فیلم B دسترسی دارد، اما جان دسترسی ندارد.
{
  "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 ، بخش نوع Paywall را بررسی کنید.

چرا یک بسته لایه مشترک مورد نیاز است؟

چندین محصول Google توصیه های تلویزیونی و فیلم را به کاربران ارائه می دهند. این شامل جستجوی Google، Android TV و Google Assistant می شود. برای تعیین انتظارات کاربر در مورد هزینه، Google باید بفهمد که چه محتوایی برای همه مشترکین از طریق استفاده از لایه مشترک در دسترس است. گوگل همچنین باید بفهمد که چه محتوایی برای مشترکین با بسته های اشتراک خاص در دسترس است.

Google عناوین موجود در سطح مشترک را توصیه می کند مگر اینکه از 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
    }
  ],

افزودنی ها

در یک مدل اشتراک افزودنی، یک ارائه‌دهنده خدمات به کاربران اجازه می‌دهد تا حقوق خود را گسترش دهند و کانال‌هایی را به یک اشتراک اولیه اضافه کنند. کاربران می توانند هر تعداد کانال که می خواهند اضافه کنند. تصویر زیر نمونه ای از ساختار پکیج است.

هر کاربر با کانال 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 با عنوان "سطح مشترک" مشخص می‌شود.
شکل 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>

واکنش

نقطه پایانی شما باید پاسخی با ویژگی های زیر برگرداند:

ویژگی
subscription

ضروری

این یک فیلد در داخل پاسخ ریشه است.

subscription.type

ضروری

این ویژگی می تواند مقادیر زیر را داشته باشد:

  • ActiveSubscription : کاربر یک اشتراک فعال برای ارائه دهنده دارد.
  • ActiveTrial : کاربر یک آزمایش فعال برای ارائه دهنده دارد.
  • اشتراک InactiveSubscription : کاربر اشتراک فعال یا آزمایشی فعال ندارد.
subscription.expiration_date

اختیاری

تاریخ انقضای این حق، در قالب ISO 8601 ، که شامل منطقه زمانی است. برای جزئیات بیشتر، تاریخ انقضا را ببینید.

entitlements

اختیاری

این ویژگی root حاوی مقادیر 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 مورد انتظار را برای نقطه پایانی خود با فرمول زیر تخمین بزنید:

میانگین QPS مورد انتظار = <تعداد کل کاربران> / 21600 ثانیه (6 ساعت در 60 دقیقه در 60 ثانیه)

اگر از تعداد زیادی کاربر پشتیبانی می کنید، گوگل می تواند فاصله زمانی 6 ساعت را تنظیم کند. در صورت لزوم، برای بحث در مورد پیکربندی با Google تماس بگیرید.

با گوگل تماس بگیرید

وقتی نقطه پایانی شما آماده شد، با Google تماس بگیرید تا URL نقطه پایانی را مطلع کنید.

ویژگی های مشخصات دسترسی اقدام

برای اطلاعات مرجع به بخش ویژگی های مشخصات دسترسی اقدام مراجعه کنید.