متطلبات الوصول

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

الشكل 1. تساعد متطلبات الوصول المشتركين في الوصول إلى المحتوى على تطبيقك أو منصتك.

تحديد متطلبات الوصول إلى المحتوى

يجب تحديد متطلبات الوصول إلى كل حزمة محتوى في الكتالوج. عند إجراء ذلك، ضع في اعتبارك الأسئلة التالية:

  • هل يحتاج المستخدمون إلى تسجيل الدخول إلى تطبيقك أو منصتك للوصول إلى المحتوى؟
  • هل يحتاج المستخدمون إلى اشتراك؟

    إجراءات المشاهدة فقط:

    • هل يحتاج المستخدمون إلى اشتراك من مقدّم خدمة خارجي؟
    • هل تقدّم اشتراكًا متعدّد المستويات أو الحِزم أو اشتراكًا إضافيًا؟
  • إجراءات المشاهدة فقط: هل يحتاج المستخدمون إلى استئجار المحتوى أو شرائه؟

  • هل تتغير متطلبات الوصول إلى المحتوى بمرور الوقت؟

  • هل يعتمد شرط الوصول إلى الموقع الجغرافي على موقع الجهاز؟

أنواع قيود الوصول

هناك نوعان من قيود الوصول:

نوع جدار الدفع

يمكنك حظر الوصول إلى المحتوى حسب نوع جدار الدفع. يوضّح الجدول التالي الأنواع المختلفة من جدران الدفع:

نوع جدار الدفع مثال الفئة
لا يلزم إجراء أي عملية شراء أو تسجيل الدخول. Crackle nologinrequired
يجب أن يكون المستخدم مسجّلاً الدخول، ولكن لا يحتاج إلى اشتراك مدفوع. Vudu (فيديوهات عند الطلب تتضمّن إعلانات) free
يجب أن يكون لدى المستخدم اشتراك نشط. ولا يرتبط الوصول بمستوى الاشتراك. Netflix

subscription

يجب أن يكون لدى المستخدم اشتراك نشط. ويعتمد الوصول إلى الميزات على فئة الاشتراك. ‫Hulu (إضافات)

subscription

يتوفّر المحتوى لمدة زمنية محدودة بعد الشراء. Vudu rental
يتوفّر المحتوى لمدة زمنية غير محدودة بعد الشراء. Vudu purchase
يتوفّر المحتوى من خلال اشتراك في خدمة التلفزيون الكبلي. HBO Go externalSubscription

نوع جدار الدفع لـ "إجراءات المشاهدة"

لتحديد نوع جدار حماية المحتوى في "إجراءات المشاهدة"، استخدِم الخاصية category في مواصفات الوصول إلى الإجراء:

"potentialAction": {
  "@type":"WatchAction",
  "target": {  },
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2018-06-01T10:35:29Z",
    "availabilityEnds": "2019-05-31T10:35:29Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  },
  ...
}

نوع جدار الدفع لإجراءات الاستماع

لتحديد نوع نظام حظر الاشتراك غير المدفوع في "إجراءات الاستماع"، استخدِم السمة category في عنصر العرض:

"potentialAction": {
  "@type":"ListenAction",
  "target": {  },
  "expectsAcceptanceOf":{
    "@type":"Offer",
    "category":"subscription",
    "availabilityStarts": "2018-06-01T10:35:29Z",
    "availabilityEnds": "2019-05-31T10:35:29Z",
    "eligibleRegion": {
      "@type":"Country",
      "name":"US"
    }
  },
  ...
}

المنطقة الجغرافية

يجب تحديد المناطق الجغرافية التي يتوفّر فيها المحتوى. استخدِم إحدى الخصائص التالية أو كلتيهما:

يمكن للمستخدم الوصول إلى المحتوى إذا كان الموقع الجغرافي للجهاز ضمن أي منطقة محدّدة في eligibleRegion وليس ضمن أي منطقة محدّدة في ineligibleRegion.

تسمح السمتان eligibleRegion وineligibleRegion بالقيم التالية:

إذا كان المحتوى متاحًا على مستوى العالم، استخدِم القيمة الخاصة التالية لسمة eligibleRegion:

"eligibleRegion": "EARTH",

حالات استخدام eligibleRegion

في ما يلي أمثلة على حالات استخدام السمة eligibleRegion:

  • المثال 1: eligibleRegion مع قائمة بالبلدان
  • المثال 2: eligibleRegion مع العنصر GeoShape الذي يحتوي على قائمة بالرموز البريدية
  • المثال 3: eligibleRegion مع عنصر GeoShape يتضمّن قائمة برموز منطقة إعادة التوجيه للرمز البريدي حسب ترتيبه (FSA).
  • المثال 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 الخطوات التالية:

  1. نُجري طلبًا من واجهة برمجة التطبيقات إلى نقطة نهاية "حقوق الوصول" لتلقّي معرّفات حقوق الوصول الخاصة بالمستخدم.
  2. نبحث عن معرّفات الأهلية المطلوبة للمحتوى من خلاصة Media Actions.
  3. نطابق entitlementId المستخدم مع السمة identifier الخاصة بالكائن اشتراك في وسائط في خلاصتك. إذا كان هناك تطابق واحد على الأقل مع entitlementId، نحدّد أنّ بإمكان المستخدم الوصول إلى المحتوى.
الشكل 2. يتطابق أحد معرّفات الأهلية الخاصة بالمستخدم مع معرّف الأهلية المطلوب للمحتوى.

تنصح Google باستخدام الصيغة التالية لـ entitlementId:

<domain name> + colon (:) + <access level to content>

أمثلة على بنية الجملة:

  • example.com:basic
  • example.com:premium
  • example.com:sports

مثال على معرّف الأهلية

تحدّد خلاصة MediaExampleCompany أنّ Movie XYZ يتطلّب example.com:basic entitlementId، كما هو موضّح أدناه:

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "Movie",
  "@id": "www.example.com/movie_xyz",
  "url": "www.example.com/movie_xyz",
  "name": "Movie XYZ",
  "potentialAction": {
    "@type": "WatchAction",
    "target": [  ],
    "actionAccessibilityRequirement": {
      "@type": "ActionAccessSpecification",
      "category": "subscription",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "@id": "http://www.example.com/basic_subscription",
        "name": "Basic subscription",
        "commonTier": true
        ...
      },
      "additionalProperty": {
        "@type": "PropertyValue",
        "name": "DisplaySubscriptionIdentifier",
        "value": "http://www.example.com/basic_subscription"
      },
      ...
    }
  },
  ...
}

حالات الاستخدام الشائعة للوصول

في ما يلي حالات الاستخدام الشائعة للوصول:

  • مجانًا (لا يلزم تسجيل الدخول): يتوفّر المحتوى بدون تسجيل الدخول أو الاشتراك أو الشراء.
  • مجانًا (يجب تسجيل الدخول): يتطلّب المحتوى أن يسجّل المستخدمون الدخول، ولكنّه لا يتطلّب اشتراكًا.
  • الاشتراك بمستوى واحد: يتطلّب المحتوى اشتراكًا. يمكن لجميع المشتركين الوصول إلى المحتوى نفسه، سواء كان أفلامًا أو حلقات، بغض النظر عن حزمة الاشتراك.
  • الاشتراك في فئات متعددة: يتطلّب المحتوى اشتراكًا. يمكن للمشتركين الوصول إلى محتوى مختلف، سواء كان أفلامًا أو حلقات، استنادًا إلى مستوى اشتراكهم. على سبيل المثال، الفضة مقابل الذهب.
  • الاشتراك في حزمة إضافية: يتطلّب المحتوى اشتراكًا. يمكن للمشتركين إضافة محتوى مميّز إلى اشتراكهم العادي.
  • الشراء لمرة واحدة: يمكن شراء المحتوى، وبعد ذلك يمكن للمستخدم الوصول إليه إلى أجل غير مسمى.
  • البث التلفزيوني المباشر: يتيح لك الاشتراك مشاهدة القنوات المحلية والوطنية والمدفوعة.
  • الاشتراك في خدمة خارجية: يتطلّب المحتوى من المستخدم تسجيل الدخول باستخدام مقدّم خدمة الكابل.

مجاني (لا يلزم تسجيل الدخول)

لا يلزم تسجيل الدخول

المحتوى متاح بدون تسجيل الدخول أو الاشتراك.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • اضبط قيمة category على nologinrequired.
  • لا تُدرِج expectAcceptanceOf.

مجانًا (يجب تسجيل الدخول)

تسجيل الدخول مطلوب

يتطلّب المحتوى أن يسجّل المستخدمون الدخول، ولكنّه لا يتطلّب اشتراكًا.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • اضبط قيمة category على free.
  • لا تُدرِج expectAcceptanceOf.

الاشتراك في مستوى واحد

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


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "requiresSubscription": {
        "@type": "MediaSubscription",
        "name": "Example Package",
        "commonTier": true,
        "@id": "http://www.example.com/example_package"
    },
    "additionalProperty": {
      "@type": "PropertyValue",
      "name": "DisplaySubscriptionIdentifier",
      "value": "http://www.example.com/example_package"
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

اشتراك متعدد المستويات

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

الشكل 3. نموذج اشتراك على عدة مستويات وتمثيل الأذونات فيه

إليك السيناريو التالي:

  • تشترك "جيهان" في فئة الذهبية. تعرض نقطة نهاية الأذونات المعرّفات التالية entitlementId:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • يشترك "أحمد" في الفئة البرونزية. تعرض نقطة نهاية الأذونات entitlementId التالية:
    • example.com:bronze
  • توضّح خلاصة Media Actions المتطلبات التالية:
    • يتطلّب الفيلم A توفّر example.com:bronze.
    • يتطلّب الفيلم "ب" example.com:silver.

في هذا السيناريو، تحدّد 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"
    },
    ...
  }
}

الاشتراك في إضافة ميزة

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

الشكل 4. نموذج اشتراك في حِزم إضافية وتمثيل الأذونات فيه

إليك السيناريو التالي:

  • لدى "سلوى" اشتراك في 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.

في هذا السيناريو، تحدّد 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 للإشارة إلى سعر الاستئجار.

البث التلفزيوني المباشر

في خلاصة &quot;إجراءات الوسائط&quot;، يمكنك حظر الوصول إلى قناة أو حدث في &quot;التلفزيون المباشر&quot; استنادًا إلى شرطَي المستخدمَين التاليَين:

  • الموقع الجغرافي لجهاز المستخدم

    لحظر الوصول إلى قناة التلفزيون، حدِّد المنطقة التي يمكن للمستخدمين الوصول إليها فيها. ينطبق هذا الشرط عادةً على قنوات البث التلفزيوني المحلية.

  • حالة حساب المستخدم

    إذا كان الوصول إلى قناة تلفزيونية يعتمد على إعداد على مستوى حساب المستخدم، استخدِم معرّفات الأهلية لتمثيل القيود.

    ينطبق هذا الشرط عادةً على حالات الاستخدام التالية:

    • الحزمة: غالبًا ما يتم تضمين القنوات الوطنية في حِزم، ويختار المستخدمون الحزمة التي يريدون الاشتراك فيها.
    • الحزمة الإضافية: تتطلّب بعض القنوات المدفوعة من المستخدمين إضافة قنوات إضافية بشكل انتقائي إلى اشتراكهم.
    • الشبكة الرياضية الإقليمية (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 اقتراحات للمستخدمين بشأن البرامج التلفزيونية والأفلام، بما في ذلك &quot;بحث Google&quot; وAndroid TV و&quot;مساعد Google&quot;. ولكي تتمكّن Google من تحديد توقعات المستخدمين بشأن التكلفة، عليها أن تفهم المحتوى المتاح لجميع المشتركين من خلال استخدام الفئة الشائعة. يجب أن تفهم Google أيضًا المحتوى المتاح للمشتركين في حِزم اشتراك معيّنة.

تنصح Google باستخدام العناوين المتوفّرة في الفئة الشائعة ما لم تكن تتيح استخدام Entitlement API. تتيح واجهة برمجة التطبيقات لـ Google فهم المحتوى غير المتوفّر ضمن الاشتراك العادي الذي يمكن لكل مستخدم الوصول إليه.

متى يجب إنشاء حزمة فئة مشتركة؟

يجب توفير حزمة فئة شائعة عندما تقدّم خدمتك محتوًى متاحًا لجميع المشتركين. ويشمل ذلك الخدمات التي تقدّم حزمة واحدة فقط والخدمات التي تقدّم حِزمًا متعددة أو حِزمًا إضافية.

لا يحتاج مقدّمو الخدمات الذين لا يتوفّر لديهم محتوى لجميع المشتركين إلى إنشاء حزمة فئة مشتركة. ومن الأمثلة على ذلك مقدّمو الخدمات الذين يوفّرون محتوًى حصريًا متبادلاً في جميع حِزمهم.

أمثلة على الفئات الشائعة

في ما يلي أمثلة على الفئة الشائعة.

الاشتراك في مستويات

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

يتضمّن المستوى الذهبي كل المحتوى المتوفّر في المستوى الفضي، والذي يتضمّن بدوره كل المحتوى المتوفّر في المستوى البرونزي.
الشكل 5. بنية حزمة الاشتراك المتدرّج

في مثال الرمز البرمجي التالي، تكون الحزمة البرونزية هي الفئة الشائعة لأنّ جميع المستخدمين يمكنهم الوصول إلى كل المحتوى في تلك الفئة.

"requiresSubscription": [
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/bronze",
      "name": "Bronze",
      "sameAs": "https://www.example.com/package/bronze",
      "commonTier": true
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/silver",
      "name": "Silver",
      "sameAs": "https://www.example.com/package/silver",
      "identifier": "example.com:silver",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/gold",
      "name": "Gold",
      "sameAs": "https://www.example.com/package/gold",
      "identifier": "example.com:gold",
      "commonTier": false
    }
  ],

الإضافات

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

يبدأ كل مستخدم بالقناة الأساسية، ويمكنه اختيار إضافة أي مجموعة من قنوات PRO وSportz وMoviemax.
الشكل 6. بنية حزمة الاشتراك في الإضافات

إذا كانت لديك قناة متاحة لجميع المستخدمين ولا تتضمّن أي تكلفة، يمكنك دمج الحزمة مع حزمة الفئة الشائعة.

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

"requiresSubscription": [
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/basic",
      "name": "Basic",
      "sameAs": "https://www.example.com/package/basic",
      "commonTier": true
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/packages/basic/pro",
      "name": "PRO",
      "sameAs": "https://www.example.com/package/pro",
      "identifier": "example.com:pro",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/sportz",
      "name": "Sportz",
      "sameAs": "https://www.example.com/package/sports",
      "identifier": "example.com:sportz",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/moviemax",
      "name": "Moviemax",
      "sameAs": "https://www.example.com/package/moviemax",
      "identifier": "example.com:moviemax",
      "commonTier": false
    }
  ],

الحِزم التي تتضمّن محتوًى متداخلًا

في نموذج المحتوى الذي تتداخل فيه حزم المحتوى، يبيع مقدّم الخدمة حزمًا تتضمّن بعض المحتوى من حزم أخرى. تعرض الصورة التالية مثالاً على بنية الحزمة.

مخطّط Venn حيث يتم تصنيف التداخل بين الحِزم 1 و2 و3 على أنّه &quot;المستوى المشترك&quot;.
الشكل 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

اختياريّ

هذه السمة الجذرية تحتوي على قيم entitlementId التي يملكها المستخدم.

entitlements.entitlement

مطلوبة إذا كان الوصول إلى قائمة المحتوى المتوفّر للبث يختلف حسب نوع الاشتراك.

تحتوي هذه السمة على entitlementId. لمزيد من المعلومات، يُرجى الاطّلاع على معرّف الأهلية.

entitlements.expiration_date

اختياريّ

تمثّل هذه السمة تاريخ انتهاء صلاحية الاشتراك بتنسيق ISO 8601، ويشمل ذلك المنطقة الزمنية. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة تواريخ انتهاء الصلاحية.

تواريخ انتهاء الصلاحية

هناك خاصيتان في استجابة نقطة النهاية تتعاملان مع تواريخ انتهاء الصلاحية: subscription.expiration_date وentitlements.expiration_date. يمكنك تضمين إحدى السمتَين أو عدم تضمين أي منهما، ولكن ليس كلتيهما. ويعتمد اختيارك لأحدهما على نموذج اشتراكك.

نموذج الاشتراك
تتوفّر كتالوجات البث لجميع المشتركين. بما أنّه ليس عليك تحديد السمة entitlements، حدِّد subscription.expiration_date.

يختلف الوصول إلى قائمة المحتوى المتوفّر للبث حسب تفاصيل اشتراك المستخدم.

إذا كان نموذج الاشتراك يتضمّن فئات أو إضافات متعدّدة تنتهي صلاحيتها بمرور الوقت، اتّخِذ أحد الإجراءَين التاليَين:

  • إذا انتهت صلاحية جميع قيم entitlements.entitlement في الوقت نفسه، حدِّد subscription.expiration_date.
  • إذا انتهت صلاحية بعض قيم entitlements.entitlement في أوقات مختلفة، حدِّد entitlements.expiration_date.

أمثلة للردود

في ما يلي أمثلة على الردود التي تتضمّن حالات اشتراك مختلفة:

  • اشتراك نشط
  • اشتراك نشط له تاريخ انتهاء صلاحية
  • بدون اشتراك
  • الاشتراكات النشطة في مستويات أو ميزات إضافية متعددة

اشتراك نشط

الاشتراك النشط

لدى المستخدم اشتراك نشط في example.com. في هذه الحالة، يمكن لجميع المشتركين الوصول إلى كتالوج البث الكامل بغض النظر عن نوع الاشتراك.


{
  "subscription" : {
    "type": "ActiveSubscription",
  }
}

اشتراك نشط له تاريخ انتهاء صلاحية

اشتراك نشط له تاريخ انتهاء صلاحية

لدى المستخدم اشتراك نشط في example.com، ولهذا الاشتراك تاريخ انتهاء صلاحية. في هذه الحالة، يمكن لجميع المشتركين الوصول إلى كتالوج البث الكامل بغض النظر عن نوع اشتراكهم.


{
  "subscription" : {
    "type": "ActiveSubscription",
    "expiration_date": "2019-11-10T10:00:00Z"
  }
}

بدون اشتراك

بدون اشتراك

ليس لدى المستخدم اشتراك في example.com.


{
  "subscription" : {
    "type": "InactiveSubscription"
  }
}

الاشتراكات النشطة في مستويات أو ميزات إضافية متعددة

الاشتراكات النشطة في فئات أو حِزم إضافية متعددة

لدى المستخدم اشتراك في example.com:premium حتى تاريخ معيّن.


{
  "subscription" : {
    "type": "ActiveSubscription",
  }
  "entitlements": [
    {
      "entitlement": "example.com:premium",
      "expiration": "2019-11-10T10:00:00Z"
    }
  ]
}

الحدّ الأقصى لمعدّل الاستخدام

تحدّث Google معلومات أذونات المستخدم كل ست ساعات كحد أقصى. لتحقيق سلاسة في الحد الأقصى لعدد الطلبات في الثانية (QPS)، توزّع Google الطلبات على نقطة النهاية بالتساوي بمرور الوقت. وبالتالي، يمكنك تقدير متوسّط عدد طلبات البحث في الثانية المتوقّع لنقطة النهاية باستخدام الصيغة التالية:

متوسط عدد الطلبات المتوقّع في الثانية = <إجمالي عدد المستخدمين>/ 21,600 ثانية (6 ساعات × 60 دقيقة × 60 ثانية)

إذا كنت توفّر الدعم لعدد كبير من المستخدمين، يمكن أن تعدّل Google الفاصل الزمني البالغ 6 ساعات. إذا لزم الأمر، تواصَل مع Google لمناقشة عملية الإعداد.

الاتصال بـ Google

عندما تصبح نقطة النهاية جاهزة، تواصَل مع Google لإبلاغها بعنوان URL الخاص بنقطة النهاية.

خصائص مواصفات أذونات الوصول إلى الإجراءات

راجِع قسم خصائص مواصفات الوصول إلى الإجراءات للحصول على معلومات مرجعية.