يفضّل المستخدمون مشاهدة محتوى يمكنهم الوصول إليه أو الاستماع إليه، مثل محتوى اشتراكهم الحالي. إذا كان محرّك البحث Google يعرف المحتوى الذي يمكن للمستخدم الوصول إليه على تطبيقك أو منصّتك، بإمكان Google إنشاء نتيجة بحث أفضل أو استجابة أفضل لتوجيه المستخدم إلى ذلك المحتوى.
تحديد متطلبات الوصول إلى المحتوى
يجب تحديد متطلبات الوصول لكل حزمة محتوى في الكتالوج. وعند إجراء ذلك، عليك طرح الأسئلة التالية:
- هل يحتاج المستخدمون إلى تسجيل الدخول إلى التطبيق أو النظام الأساسي للوصول إلى المحتوى؟
هل يحتاج المستخدمون إلى اشتراك؟
إجراءات الساعة فقط:
- هل يحتاج المستخدمون إلى اشتراك من مقدِّم خدمة خارجي؟
- هل تقدم اشتراكًا متعدد المستويات أو حزمة متعددة أو إضافة؟
مشاهدة الإجراءات فقط: هل يحتاج المستخدمون إلى استئجار المحتوى أو شرائه؟
هل تتغير متطلبات الوصول بمرور الوقت؟
هل تعتمد متطلبات الوصول على الموقع الجغرافي للجهاز؟
أنواع قيود الوصول
هناك نوعان من قيود الوصول:
نوع نظام حظر الاشتراك غير المدفوع
يمكنك حظر الوصول إلى المحتوى حسب نوعه. يوضح الجدول التالي تفاصيل الأنواع المختلفة لنظام حظر الاشتراك غير المدفوع:
نوع نظام حظر الاشتراك غير المدفوع | مثال | الفئة |
---|---|---|
لا يلزم إجراء عملية شراء أو تسجيل دخول. | طقطقة | nologinrequired |
على المستخدم تسجيل الدخول، ولكن لا يحتاج إلى اشتراك مدفوع. | فودو (AVOD) | 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
:
- المثال 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 }, "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 }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area3", "addressCountry": "US", "identifier": [ { "@type": "PropertyValue", "propertyID": "DMA_ID", "value": "501" } ] } }
المثال الخامس
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 الخطوات التالية:
- نُجري طلب بيانات من واجهة برمجة التطبيقات إلى نقطة نهاية التخويل للحصول على معرّفات التخويل للمستخدم.
- نبحث عن معرّفات تخويل المحتوى المطلوبة من خلاصة إجراءات الوسائط.
- نطابق
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 ... }, ... } }, ... }
حالات الاستخدام الشائعة للوصول
في ما يلي حالات الاستخدام الشائعة للوصول:
- مجانًا (لا يلزم تسجيل الدخول): المحتوى متاح بدون تسجيل الدخول أو الاشتراك أو الشراء.
- مجانية (مطلوب تسجيل الدخول): يتطلب المحتوى تسجيل دخول المستخدمين ولكنه لا يتطلب اشتراكًا.
- اشتراك من فئة واحدة: يجب الاشتراك في المحتوى. ويمكن لجميع المشتركين الوصول إلى المحتوى نفسه، سواء كان ذلك في الأفلام أو الحلقات، بغض النظر عن حزمة الاشتراك الخاصة بهم.
- اشتراك متعدد المستويات: يجب توفير اشتراك للاشتراك في المحتوى. ويمكن للمشتركين الوصول إلى محتوى مختلف، سواء كان أفلامًا أو حلقات، استنادًا إلى فئة اشتراكهم. على سبيل المثال، المستوى الفضّي مقابل المستوى الذهبي.
- اشتراك الإضافة: يجب توفير اشتراك للحصول على محتوى. يمكن للمشتركين إضافة محتوى مميّز إلى جانب اشتراكاتهم الاعتيادية.
- شراء لمرة واحدة: يمكن شراء المحتوى، وبعد ذلك يمكن للمستخدم الوصول إليه إلى أجل غير مسمى.
- بث تلفزيوني مباشر: يتضمن الاشتراك إمكانية الوصول إلى القنوات المحلية والوطنية والمميّزة.
- اشتراك تابع لجهة خارجية: يتطلب المحتوى من المستخدم تسجيل الدخول باستخدام مقدّم خدمة الكابل.
مجانًا (لا يلزم تسجيل الدخول)
لا حاجة إلى تسجيل الدخول
المحتوى متاح بدون تسجيل الدخول أو الاشتراك.
{ "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
- توضّح خلاصة "إجراءات الوسائط" المتطلبات التالية:
- يتطلب الفيلم (أ) استخدام
example.com:bronze
. - يتطلب الفيلم "ب" استخدام
example.com:silver
.
- يتطلب الفيلم (أ) استخدام
في هذا السيناريو، يحدّد محرّك بحث Google مستويات الوصول التالية لكل من "سمير" و"جون":
- فِيهْ كِلَامِةْ سَامِي وِفُؤَادْ عَنْدُهُمْ إِذَا كَانُوا مُتَاحِينْ لِـ الْأَفْلَامْ A.
- حَسَنْ مُمْكِنِ الْوُصُولْ لِـ الْفِيلْمْ بْ، بَسّْ مُنِيرْ مِشْ فَعَّلْ دَهْ.
{ "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
- سَامِي فِيهْ اشْتِرَاكْ أساسي فَقَطْ. تعرض نقطة نهاية التخويلات
entitlementId
التالية:example.com:basic
- توضّح خلاصة "إجراءات الوسائط" المتطلبات التالية:
- يتطلب الفيلم (أ) استخدام
example.com:basic
. - يتطلب الفيلم "ب" استخدام
example.com:pro
.
- يتطلب الفيلم (أ) استخدام
في هذا السيناريو، يحدّد محرّك بحث Google مستويات الوصول التالية لكل من "سمير" و"جون":
- فِيهْ كِلَامِةْ سَامِي وِفُؤَادْ عَنْدُهُمْ إِذَا كَانُوا مُتَاحِينْ لِـ الْأَفْلَامْ A.
- حَسَنْ مُمْكِنِ الْوُصُولْ لِـ الْفِيلْمْ بْ، بَسّْ مُنِيرْ مِشْ فَعَّلْ دَهْ.
{ "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 حتى عند سفرهم خارج موقع "منزلهم".
اشتراك جهة خارجية
اشتراك الجهات الخارجية
المحتوى متوفر للمشتركين من خدمة مختلفة.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "externalsubscription" "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription":{ "@type": "MediaSubscription", "@id": "https://www.example.com/faq", "name": "Example", "sameAs": "https://www.example.com/faq", "authenticator": { "@type": "Organization", "name": "TVE" } }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
- يمكنك إضافة
authenticator
للإشارة إلى أنّ خدمة مختلفة تصادق على المشتركين. على سبيل المثال، تتطلب HBO GO اشتراكًا من مقدّم خدمة الكابل.
باقات السفر الشائعة
يمكن لجميع المشتركين الاشتراك في المحتوى المشترَك بغض النظر عن حزمة الاشتراكات. تنطبق الفئة الشائعة على كل المحتوى الذي يتضمن category
subscription
. ولمزيد من المعلومات عن السمة category
، يمكنك الاطّلاع على القسم نوع نظام حظر الاشتراك غير المدفوع.
لماذا يجب أن تتوفّر حزمة فئة مشتركة؟
تعرض منتجات Google المتعددة اقتراحات للتلفزيون والأفلام للمستخدمين، ويشمل ذلك "بحث Google" وAndroid TV و"مساعد Google". لضبط توقّعات المستخدمين بشأن التكلفة، يجب أن يفهم محرّك البحث Google المحتوى المتاح لجميع المشتركين من خلال استخدام الفئة الشائعة. يجب أن يفهم محرّك البحث Google أيضًا المحتوى المتوفّر للمشتركين الذين لديهم حزم اشتراك معيّنة.
تنصح Google باستخدام العناوين المتوفّرة في الفئة الشائعة ما لم توفّر واجهة برمجة تطبيقات التخويل. تتيح واجهة برمجة التطبيقات لـ 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 تحميل معلومات استحقاقات المستخدم لما يصل إلى كل ست ساعات. لتسهيل الحد الأقصى من طلبات البحث في الثانية، يوزع Google طلبات البحث على نقطة النهاية بالتساوي مع مرور الوقت. وبالتالي، يمكنك تقدير متوسط التكلفة المستهدفة للإجراء في نقطة النهاية باستخدام الصيغة التالية:
متوسّط وقت الاستجابة المتوقّع = <إجمالي عدد المستخدمين> / 21,600 ثانية (6 ساعات × 60 دقيقة × 60 ثانية)
إذا كنت تسمح بعدد كبير من المستخدمين، يمكن لشركة Google ضبط الفاصل الزمني الذي يبلغ 6 ساعات. وإذا لزم الأمر، يمكنك التواصل مع Google لمناقشة عملية الضبط.
التواصل مع شركة Google
عندما تكون نقطة النهاية جاهزة، عليك التواصل مع Google لإعلام عنوان URL لنقطة النهاية.
خصائص مواصفات الوصول إلى الإجراء
يمكنك الاطّلاع على القسم خصائص مواصفات الوصول إلى الإجراءات للحصول على معلومات مرجعية.