يفضّل المستخدمون مشاهدة المحتوى الذي يمكنهم الوصول إليه، مثل المحتوى المضمّن في اشتراكاتهم الحالية. إذا كان بإمكان Google معرفة المحتوى الذي يمكن للمستخدم الوصول إليه على تطبيقك أو منصتك، يمكنه إنشاء نتيجة بحث أو ردّ أفضل لتوجيه المستخدم إلى هذا المحتوى.

تحديد متطلبات الوصول إلى المحتوى
يجب تحديد متطلبات الوصول إلى كل حزمة محتوى في الكتالوج. عند إجراء ذلك، ضع في اعتبارك الأسئلة التالية:
- هل يحتاج المستخدمون إلى تسجيل الدخول إلى تطبيقك أو منصتك للوصول إلى المحتوى؟
هل يحتاج المستخدمون إلى اشتراك؟
إجراءات المشاهدة فقط:
- هل يحتاج المستخدمون إلى اشتراك من مقدّم خدمة خارجي؟
- هل تقدّم اشتراكًا متعدّد المستويات أو الحِزم أو اشتراكًا إضافيًا؟
إجراءات المشاهدة فقط: هل يحتاج المستخدمون إلى استئجار المحتوى أو شرائه؟
هل تتغير متطلبات الوصول إلى المحتوى بمرور الوقت؟
هل يعتمد شرط الوصول إلى الموقع الجغرافي على موقع الجهاز؟
أنواع قيود الوصول
هناك نوعان من قيود الوصول:
نوع جدار الدفع
يمكنك حظر الوصول إلى المحتوى حسب نوع جدار الدفع. يوضّح الجدول التالي الأنواع المختلفة من جدران الدفع:
نوع جدار الدفع | مثال | الفئة |
---|---|---|
لا يلزم إجراء أي عملية شراء أو تسجيل الدخول. | Crackle | nologinrequired |
يجب أن يكون المستخدم مسجّلاً الدخول، ولكن لا يحتاج إلى اشتراك مدفوع. | Vudu (فيديوهات عند الطلب تتضمّن إعلانات) | free |
يجب أن يكون لدى المستخدم اشتراك نشط. ولا يرتبط الوصول بمستوى الاشتراك. | Netflix |
|
يجب أن يكون لدى المستخدم اشتراك نشط. ويعتمد الوصول إلى الميزات على فئة الاشتراك. | Hulu (إضافات) |
|
يتوفّر المحتوى لمدة زمنية محدودة بعد الشراء. | Vudu | rental |
يتوفّر المحتوى لمدة زمنية غير محدودة بعد الشراء. | Vudu | purchase |
يتوفّر المحتوى من خلال اشتراك في خدمة التلفزيون الكبلي. | HBO Go | externalSubscription |
نوع جدار الدفع لـ "إجراءات المشاهدة"
لتحديد نوع جدار حماية المحتوى في "إجراءات المشاهدة"، استخدِم الخاصية
category
في
مواصفات الوصول إلى الإجراء:
"potentialAction": {
"@type":"WatchAction",
"target": { … },
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},
...
}
نوع جدار الدفع لإجراءات الاستماع
لتحديد نوع نظام حظر الاشتراك غير المدفوع في "إجراءات الاستماع"، استخدِم السمة
category
في
عنصر العرض:
"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
وineligibleRegion
بالقيم التالية:
- قائمة
Country
وCity
وState
- كائن
GeoShape
. اطّلِع على قسم سماتGeoShape
لمعرفة المتطلبات التفصيلية. - قائمة تتضمّن
GeoShape
عنصرًا
إذا كان المحتوى متاحًا على مستوى العالم، استخدِم القيمة الخاصة التالية لسمة eligibleRegion
:
"eligibleRegion": "EARTH",
حالات استخدام eligibleRegion
في ما يلي أمثلة على حالات استخدام السمة eligibleRegion
:
- المثال 1:
eligibleRegion
مع قائمة بالبلدان - المثال 2:
eligibleRegion
مع العنصرGeoShape
الذي يحتوي على قائمة بالرموز البريدية - المثال 3:
eligibleRegion
مع عنصرGeoShape
يتضمّن قائمة برموز منطقة إعادة التوجيه للرمز البريدي حسب ترتيبه (FSA). - المثال 4:
eligibleRegion
مع كائنGeoShape
يتضمّن معرّف منطقة سوق محدّدة. - المثال 5:
eligibleRegion
مع قائمة بعناصرGeoShape
يحتوي كلّ منها على معرّف منطقة تسويق معيّنة. - المثال 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 }, "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
يحتوي على معرّف منطقة تسويق معيّنة:
"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" } ] } }
المثال الخامس
eligibleRegion
مع قائمة بعناصر GeoShape
يحتوي كلّ منها على معرّف منطقة سوقية محدّدة:
"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 الخطوات التالية:
- نُجري طلبًا من واجهة برمجة التطبيقات إلى نقطة نهاية "حقوق الوصول" لتلقّي معرّفات حقوق الوصول الخاصة بالمستخدم.
- نبحث عن معرّفات الأهلية المطلوبة للمحتوى من خلاصة Media Actions.
- نطابق
entitlementId
المستخدم مع السمةidentifier
الخاصة بالكائن اشتراك في وسائط في خلاصتك. إذا كان هناك تطابق واحد على الأقل معentitlementId
، نحدّد أنّ بإمكان المستخدم الوصول إلى المحتوى.

تنصح Google باستخدام الصيغة التالية لـ entitlementId
:
<domain name> + colon (:) + <access level to content>
أمثلة على بنية الجملة:
example.com:basic
example.com:premium
example.com:sports
مثال على معرّف الأهلية
تحدّد خلاصة MediaExampleCompany أنّ Movie XYZ
يتطلّب
example.com:basic
entitlementId
، كما هو موضّح أدناه:
{ "@context": ["http://schema.org", {"@language": "en"}], "@type": "Movie", "@id": "www.example.com/movie_xyz", "url": "www.example.com/movie_xyz", "name": "Movie XYZ", "potentialAction": { "@type": "WatchAction", "target": [ … ], "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Basic subscription", "commonTier": true ... }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/basic_subscription" }, ... } }, ... }
حالات الاستخدام الشائعة للوصول
في ما يلي حالات الاستخدام الشائعة للوصول:
- مجانًا (لا يلزم تسجيل الدخول): يتوفّر المحتوى بدون تسجيل الدخول أو الاشتراك أو الشراء.
- مجانًا (يجب تسجيل الدخول): يتطلّب المحتوى أن يسجّل المستخدمون الدخول، ولكنّه لا يتطلّب اشتراكًا.
- الاشتراك بمستوى واحد: يتطلّب المحتوى اشتراكًا. يمكن لجميع المشتركين الوصول إلى المحتوى نفسه، سواء كان أفلامًا أو حلقات، بغض النظر عن حزمة الاشتراك.
- الاشتراك في فئات متعددة: يتطلّب المحتوى اشتراكًا. يمكن للمشتركين الوصول إلى محتوى مختلف، سواء كان أفلامًا أو حلقات، استنادًا إلى مستوى اشتراكهم. على سبيل المثال، الفضة مقابل الذهب.
- الاشتراك في حزمة إضافية: يتطلّب المحتوى اشتراكًا. يمكن للمشتركين إضافة محتوى مميّز إلى اشتراكهم العادي.
- الشراء لمرة واحدة: يمكن شراء المحتوى، وبعد ذلك يمكن للمستخدم الوصول إليه إلى أجل غير مسمى.
- البث التلفزيوني المباشر: يتيح لك الاشتراك مشاهدة القنوات المحلية والوطنية والمدفوعة.
- الاشتراك في خدمة خارجية: يتطلّب المحتوى من المستخدم تسجيل الدخول باستخدام مقدّم خدمة الكابل.
مجاني (لا يلزم تسجيل الدخول)
لا يلزم تسجيل الدخول
المحتوى متاح بدون تسجيل الدخول أو الاشتراك.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- اضبط قيمة
category
علىnologinrequired
. - لا تُدرِج
expectAcceptanceOf
.
مجانًا (يجب تسجيل الدخول)
تسجيل الدخول مطلوب
يتطلّب المحتوى أن يسجّل المستخدمون الدخول، ولكنّه لا يتطلّب اشتراكًا.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- اضبط قيمة
category
علىfree
. - لا تُدرِج
expectAcceptanceOf
.
الاشتراك في مستوى واحد
في نموذج الاشتراك ذي المستوى الواحد، يقدّم مقدّم الخدمة مستوى اشتراك واحدًا. يمكن لجميع المشتركين الوصول إلى المحتوى نفسه، سواء كان أفلامًا أو حلقات، بغض النظر عن حزمة الاشتراك.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription": { "@type": "MediaSubscription", "name": "Example Package", "commonTier": true, "@id": "http://www.example.com/example_package" }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/example_package" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
اشتراك متعدد المستويات
في نموذج الاشتراك المتدرّج، يقدّم مقدّم الخدمة مستويات اشتراك متعددة، مثل الذهبي والفضي والبرونزي. يمكن للمستخدمين الذين لديهم اشتراك في المستوى الأعلى الوصول إلى كل المحتوى المتوفّر في المستوى الأدنى. ومع ذلك، لا يمكن للمستخدمين الذين لديهم اشتراك في مستوى أدنى الوصول إلى محتوى المستوى الأعلى.

إليك السيناريو التالي:
- تشترك "جيهان" في فئة الذهبية. تعرض نقطة نهاية الأذونات المعرّفات التالية
entitlementId
:example.com:bronze
example.com:silver
example.com:gold
- يشترك "أحمد" في الفئة البرونزية. تعرض نقطة نهاية الأذونات
entitlementId
التالية:example.com:bronze
- توضّح خلاصة Media Actions المتطلبات التالية:
- يتطلّب الفيلم A توفّر
example.com:bronze
. - يتطلّب الفيلم "ب"
example.com:silver
.
- يتطلّب الفيلم A توفّر
في هذا السيناريو، تحدّد Google مستويات الوصول التالية لكل من "سارة" و"أحمد":
- يمكن لكل من "سارة" و"سامر" الوصول إلى الفيلم أ.
- يمكن لسارة مشاهدة الفيلم ب، ولكن لا يمكن لسامي مشاهدته.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/basic_subscription" }, ... } }
الاشتراك في إضافة ميزة
في نموذج الاشتراك في الحِزم الإضافية، يتيح مقدّم الخدمة للمستخدمين توسيع نطاق أهليتهم وإضافة قنوات إلى الاشتراك الأساسي. يمكن للمستخدمين إضافة أي عدد يريدونه من القنوات.

إليك السيناريو التالي:
- لدى "سلوى" اشتراك في PRO وSportz بالإضافة إلى اشتراكها في Basic. تعرض نقطة نهاية الأذونات معرّفات
entitlementId
التالية:example.com:basic
example.com:pro
example.com:sportz
- لدى "أحمد" اشتراك أساسي فقط. تعرض نقطة نهاية الأذونات
entitlementId
التالية:example.com:basic
- توضّح خلاصة Media Actions المتطلبات التالية:
- يتطلّب الفيلم A توفّر
example.com:basic
. - يتطلّب الفيلم "ب"
example.com:pro
.
- يتطلّب الفيلم A توفّر
في هذا السيناريو، تحدّد 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 } ], "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". ولكي تتمكّن Google من تحديد توقعات المستخدمين بشأن التكلفة، عليها أن تفهم المحتوى المتاح لجميع المشتركين من خلال استخدام الفئة الشائعة. يجب أن تفهم Google أيضًا المحتوى المتاح للمشتركين في حِزم اشتراك معيّنة.
تنصح Google باستخدام العناوين المتوفّرة في الفئة الشائعة ما لم تكن تتيح استخدام Entitlement 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 |
اختياريّ هذه السمة الجذرية تحتوي على قيم |
entitlements.entitlement |
مطلوبة إذا كان الوصول إلى قائمة المحتوى المتوفّر للبث يختلف حسب نوع الاشتراك. تحتوي هذه السمة على |
entitlements.expiration_date |
اختياريّ تمثّل هذه السمة تاريخ انتهاء صلاحية الاشتراك بتنسيق ISO 8601، ويشمل ذلك المنطقة الزمنية. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة تواريخ انتهاء الصلاحية. |
تواريخ انتهاء الصلاحية
هناك خاصيتان في استجابة نقطة النهاية تتعاملان مع تواريخ انتهاء الصلاحية: subscription.expiration_date
وentitlements.expiration_date
. يمكنك تضمين إحدى السمتَين أو عدم تضمين أي منهما، ولكن ليس كلتيهما. ويعتمد اختيارك لأحدهما على نموذج اشتراكك.
نموذج الاشتراك | |
---|---|
تتوفّر كتالوجات البث لجميع المشتركين. | بما أنّه ليس عليك تحديد السمة entitlements ، حدِّد subscription.expiration_date . |
يختلف الوصول إلى قائمة المحتوى المتوفّر للبث حسب تفاصيل اشتراك المستخدم. |
إذا كان نموذج الاشتراك يتضمّن فئات أو إضافات متعدّدة تنتهي صلاحيتها بمرور الوقت، اتّخِذ أحد الإجراءَين التاليَين:
|
أمثلة للردود
في ما يلي أمثلة على الردود التي تتضمّن حالات اشتراك مختلفة:
- اشتراك نشط
- اشتراك نشط له تاريخ انتهاء صلاحية
- بدون اشتراك
- الاشتراكات النشطة في مستويات أو ميزات إضافية متعددة
اشتراك نشط
الاشتراك النشط
لدى المستخدم اشتراك نشط في example.com. في هذه الحالة، يمكن لجميع المشتركين الوصول إلى كتالوج البث الكامل بغض النظر عن نوع الاشتراك.
{ "subscription" : { "type": "ActiveSubscription", } }
اشتراك نشط له تاريخ انتهاء صلاحية
اشتراك نشط له تاريخ انتهاء صلاحية
لدى المستخدم اشتراك نشط في example.com، ولهذا الاشتراك تاريخ انتهاء صلاحية. في هذه الحالة، يمكن لجميع المشتركين الوصول إلى كتالوج البث الكامل بغض النظر عن نوع اشتراكهم.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
بدون اشتراك
بدون اشتراك
ليس لدى المستخدم اشتراك في example.com.
{ "subscription" : { "type": "InactiveSubscription" } }
الاشتراكات النشطة في مستويات أو ميزات إضافية متعددة
الاشتراكات النشطة في فئات أو حِزم إضافية متعددة
لدى المستخدم اشتراك في example.com:premium
حتى تاريخ معيّن.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
الحدّ الأقصى لمعدّل الاستخدام
تحدّث Google معلومات أذونات المستخدم كل ست ساعات كحد أقصى. لتحقيق سلاسة في الحد الأقصى لعدد الطلبات في الثانية (QPS)، توزّع Google الطلبات على نقطة النهاية بالتساوي بمرور الوقت. وبالتالي، يمكنك تقدير متوسّط عدد طلبات البحث في الثانية المتوقّع لنقطة النهاية باستخدام الصيغة التالية:
متوسط عدد الطلبات المتوقّع في الثانية = <إجمالي عدد المستخدمين>/ 21,600 ثانية (6 ساعات × 60 دقيقة × 60 ثانية)
إذا كنت توفّر الدعم لعدد كبير من المستخدمين، يمكن أن تعدّل Google الفاصل الزمني البالغ 6 ساعات. إذا لزم الأمر، تواصَل مع Google لمناقشة عملية الإعداد.
الاتصال بـ Google
عندما تصبح نقطة النهاية جاهزة، تواصَل مع Google لإبلاغها بعنوان URL الخاص بنقطة النهاية.
خصائص مواصفات أذونات الوصول إلى الإجراءات
راجِع قسم خصائص مواصفات الوصول إلى الإجراءات للحصول على معلومات مرجعية.