کاربران ترجیح می دهند محتوایی را که قبلاً می توانند به آن دسترسی داشته باشند، مانند محتوای اشتراک موجود خود، تماشا یا گوش دهند. اگر Google بداند کاربر به چه محتوایی در برنامه یا پلتفرم شما میتواند دسترسی داشته باشد، گوگل میتواند نتیجه جستجو یا پاسخ بهتری برای هدایت کاربر به آن محتوا ایجاد کند.
الزامات دسترسی به محتوا را شناسایی کنید
شما باید الزامات دسترسی برای هر بسته محتوا را در کاتالوگ خود مشخص کنید. هنگامی که این کار را انجام می دهید، به سؤالات زیر توجه کنید:
- آیا کاربران برای دسترسی به محتوا نیاز به ورود به برنامه یا پلتفرم شما دارند؟
آیا کاربران نیاز به اشتراک دارند؟
فقط Watch Actions:
- آیا کاربران نیاز به اشتراک از یک ارائه دهنده خدمات خارجی دارند؟
- آیا اشتراک چند بسته ای یا افزودنی ارائه می دهید؟
فقط Watch Actions: آیا کاربران نیاز به اجاره یا خرید محتوا دارند؟
آیا الزامات دسترسی در طول زمان تغییر می کند؟
آیا نیاز دسترسی به مکان دستگاه بستگی دارد؟
انواع محدودیت دسترسی
دو نوع محدودیت دسترسی وجود دارد:
نوع Paywall
شما می توانید دسترسی به محتوا را بر اساس نوع دیوار پرداخت آن محدود کنید. جدول زیر انواع مختلف paywall را توضیح می دهد:
نوع Paywall | مثال | دسته بندی |
---|---|---|
نیازی به خرید یا ورود به سیستم نیست. | ترق | nologinrequired |
کاربر باید وارد سیستم شده باشد، اما نیازی به اشتراک پولی ندارد. | وودو (AVOD) | free |
کاربر باید اشتراک فعال داشته باشد. دسترسی مستقل از ردیف اشتراک است. | نتفلیکس | |
کاربر باید اشتراک فعال داشته باشد. دسترسی به سطح اشتراک بستگی دارد. | Hulu (افزونه ها) | |
محتوا پس از خرید برای مدت زمان محدودی در دسترس است. | وودو | 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
یک شیء مشخصات دسترسی Action . این خاصیت مورد نیاز است. - ویژگی
ineligibleRegion
یک شیء مشخصات دسترسی Action .
اگر مکان دستگاه در هر منطقه ای باشد که در eligibleRegion
مشخص شده باشد و در منطقه ای که در ineligibleRegion
مشخص شده نباشد، کاربر می تواند به محتوا دسترسی داشته باشد.
ویژگیهای eligibleRegion
و ineligibleRegion
مقادیر زیر را مجاز میکنند:
- فهرستی از
Country
،City
، وState
. - یک شی
GeoShape
. برای جزئیات بیشتر به بخش خصوصیاتGeoShape
مراجعه کنید. - لیستی از اشیاء
GeoShape
.
اگر محتوا در سطح جهانی در دسترس است، از مقدار ویژه زیر برای 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 مراحل زیر را انجام می دهد:
- ما یک تماس API با نقطه پایانی حقوق شما برقرار میکنیم تا شناسههای حق کاربر را دریافت کنیم.
- ما شناسههای حق مورد نیاز محتوا را از فید Media Actions شما جستجو میکنیم.
- ما
entitlementId
کاربر را با ویژگیidentifier
شی اشتراک رسانه در فید شما مطابقت می دهیم. اگر حداقل یکentitlementId
مطابقت داشته باشد، تعیین می کنیم که کاربر می تواند به محتوا دسترسی داشته باشد.
گوگل توصیه می کند که از نحو زیر برای 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" } } }
اشتراک چند لایه
در مدل اشتراک ردیفی، یک ارائهدهنده خدمات دارای چندین لایه اشتراک مانند طلایی ، نقرهای و برنزی است. کاربرانی که اشتراک لایه بالایی دارند می توانند به تمام محتوای لایه پایین دسترسی داشته باشند. با این حال، کاربرانی که اشتراک لایه پایینتری دارند، نمیتوانند به محتوای لایه بالا دسترسی داشته باشند.
سناریوی زیر را در نظر بگیرید:
- جین در ردیف طلایی مشترک است. نقطه پایانی حقوق شما شناسه های
entitlementId
زیر را برمی گرداند:-
example.com:bronze
-
example.com:silver
-
example.com:gold
-
- جان مشترک ردیف برنز است. نقطه پایانی حقوق شما
entitlementId
زیر را برمیگرداند:-
example.com:bronze
-
- فید Media Actions شما شرایط زیر را شرح میدهد:
- فیلم A به
example.com:bronze
نیاز دارد. - فیلم B به
example.com:silver
نیاز دارد.
- فیلم A به
در این سناریو، گوگل سطوح دسترسی زیر را برای جین و جان تعیین می کند:
- جین و جان هر دو به فیلم A دسترسی دارند.
- جین به فیلم B دسترسی دارد، اما جان دسترسی ندارد.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
اشتراک افزونه
در یک مدل اشتراک افزودنی، یک ارائهدهنده خدمات به کاربران اجازه میدهد تا حقوق خود را گسترش دهند و کانالهایی را به اشتراک پایه اضافه کنند. کاربران می توانند هر تعداد کانال که می خواهند اضافه کنند.
سناریوی زیر را در نظر بگیرید:
- جین علاوه بر اشتراک پایه ، PRO و Sportz را نیز دارد. نقطه پایانی حقوق شما شناسه های
entitlementId
زیر را برمی گرداند:-
example.com:basic
-
example.com:pro
-
example.com:sportz
-
- جان فقط اشتراک Basic را دارد. نقطه پایانی حقوق شما
entitlementId
زیر را برمیگرداند:-
example.com:basic
-
- فید Media Actions شما شرایط زیر را شرح میدهد:
- فیلم A به
example.com:basic
نیاز دارد. - فیلم B به
example.com:pro
نیاز دارد.
- فیلم A به
در این سناریو، گوگل سطوح دسترسی زیر را برای جین و جان تعیین می کند:
- جین و جان هر دو به فیلم 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
را در action بگنجانید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
بگنجانیدAccessibility.
تلویزیون زنده
در فید اقدامات رسانهای، میتوانید دسترسی به یک کانال تلویزیونی زنده یا رویداد را براساس دو شرط کاربری زیر محدود کنید:
- مکان دستگاه کاربر
برای محدود کردن دسترسی به کانال تلویزیون، منطقه ای را که کاربران به آن دسترسی دارند را مشخص کنید. این شرایط معمولاً برای کانال های تلویزیونی پخش محلی اعمال می شود.
- وضعیت حساب کاربر
اگر دسترسی به یک کانال تلویزیونی به تنظیمات سطح حساب کاربر بستگی دارد، از شناسههای حق برای نشان دادن محدودیت استفاده کنید.
این شرایط معمولاً در موارد استفاده زیر اعمال می شود:
- بسته: کانالهای ملی اغلب در بستهها گنجانده میشوند و کاربران انتخاب میکنند که در کدام بسته مشترک شوند.
- افزودنی: برخی از کانالهای پریمیوم از کاربران میخواهند که به صورت انتخابی کانالهای اضافی را به اشتراک خود اضافه کنند.
- شبکه ورزشی منطقه ای (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 اجازه می دهد تا عناوین غیر معمولی را که هر کاربر خاص می تواند به آن دسترسی داشته باشد، درک کند.
چه زمانی باید یک بسته لایه مشترک ایجاد کنم؟
هنگامی که سرویس شما محتوایی را ارائه می دهد که برای همه مشترکین در دسترس است، یک بسته لایه مشترک مورد نیاز است. این شامل خدماتی می شود که تنها یک بسته ارائه می دهند و خدماتی که چندین بسته یا افزونه را ارائه می دهند.
ارائه دهندگانی که محتوایی در دسترس همه مشترکین ندارند، نیازی به ایجاد یک بسته لایه مشترک ندارند. به عنوان مثال، ارائه دهندگان خدماتی هستند که محتوای منحصر به فرد متقابل را در تمام بسته های خود ارائه می دهند.
نمونه های ردیف رایج
در زیر نمونه هایی از ردیف رایج آورده شده است.
اشتراک ردیفی
در مدل اشتراک لایهای، یک ارائهدهنده خدمات دارای چندین لایه اشتراک مانند سطوح طلایی ، نقرهای و برنزی است. کاربرانی که اشتراک لایه بالایی دارند به تمام محتوای لایه های پایین دسترسی دارند. کاربران دارای اشتراک سطح پایین به محتوای لایه بالا دسترسی ندارند. تصویر زیر نمونه ای از ساختار پکیج است.
در مثال کد زیر، بسته برنزی لایه رایج است زیرا همه کاربران به تمام محتوای آن ردیف دسترسی دارند.
"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>
واکنش
نقطه پایانی شما باید پاسخی با ویژگی های زیر برگرداند:
ویژگی | |
---|---|
subscription | ضروری این یک فیلد در داخل پاسخ ریشه است. |
subscription.type | ضروری این ویژگی می تواند مقادیر زیر را داشته باشد:
|
subscription.expiration_date | اختیاری تاریخ انقضای این حق، در قالب ISO 8601 ، که شامل منطقه زمانی است. برای جزئیات بیشتر، تاریخ انقضا را ببینید. |
entitlements | اختیاری این ویژگی root حاوی مقادیر |
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 پرسوجوها را در طول زمان به طور مساوی در نقطه پایانی شما توزیع میکند. بنابراین، می توانید میانگین QPS مورد انتظار را برای نقطه پایانی خود با فرمول زیر تخمین بزنید:
میانگین QPS مورد انتظار = <تعداد کل کاربران> / 21600 ثانیه (6 ساعت در 60 دقیقه در 60 ثانیه)
اگر از تعداد زیادی کاربر پشتیبانی می کنید، گوگل می تواند فاصله زمانی 6 ساعت را تنظیم کند. در صورت لزوم، با Google تماس بگیرید تا در مورد پیکربندی صحبت کنید.
با گوگل تماس بگیرید
وقتی نقطه پایانی شما آماده شد، با Google تماس بگیرید تا URL نقطه پایانی را مطلع کنید.
ویژگی های مشخصات دسترسی اقدام
برای اطلاعات مرجع به بخش ویژگی های مشخصات دسترسی اقدام مراجعه کنید.