Erişim şartları

Kullanıcılar, mevcut abonelik içerikleri gibi erişebildikleri içerikleri izlemeyi veya dinlemeyi tercih eder. Google, bir kullanıcının uygulamanızda veya platformunuzda hangi içeriğe erişebileceğini biliyorsa Google platformlarında daha alakalı bir deneyim sunabilir ve kullanıcıyı bu içeriğe yönlendirebilir.

Şekil 1. Erişim şartları, abonelerinizin uygulamanızdaki veya platformunuzdaki içeriğe erişmesine yardımcı olur.

İçerik erişimi şartlarını belirleme

Kataloğunuzdaki her içerik paketi için erişim şartını belirtmeniz gerekir. Bu işlemi yaparken aşağıdaki soruları göz önünde bulundurun:

  • Kullanıcıların içeriğe erişmek için uygulamanıza veya platformunuza giriş yapması gerekiyor mu?
  • Kullanıcıların aboneliği olması gerekir mi?

    Yalnızca izleme işlemleri:

    • Kullanıcıların harici bir servis sağlayıcıdan abonelik alması gerekiyor mu?
    • Katmanlı, çok paketli veya eklenti aboneliği sunuyor musunuz?
  • Yalnızca izleme işlemleri: Kullanıcıların içeriği kiralaması veya satın alması gerekiyor mu?

  • Erişim koşulu zaman içinde değişir mi?

  • Erişim şartı cihaz konumuna mı bağlı?

Erişim kısıtlaması türleri

İki tür erişim kısıtlaması vardır:

Ödeme duvarı türü

İçeriğe erişimi ödeme duvarı türüne göre kısıtlayabilirsiniz. Aşağıdaki tabloda farklı ödeme duvarı türleri açıklanmaktadır:

Ödeme duvarı türü Örnek Kategori
Satın alma veya giriş yapma gerekmez. Crackle nologinrequired
Kullanıcının giriş yapması gerekir ancak ücretli aboneliğe ihtiyacı yoktur. Vudu (AVOD) free
Kullanıcının etkin bir aboneliği olmalıdır. Erişim, abonelik katmanından bağımsızdır. Netflix

subscription

Kullanıcının etkin bir aboneliği olmalıdır. Erişim, abonelik katmanına bağlıdır. Hulu (eklentiler)

subscription

İçerik, satın alma işleminden sonra sınırlı bir süreliğine kullanılabilir. Vudu rental
İçerik, satın alma işleminden sonra süresiz olarak kullanılabilir. Vudu purchase
İçerik, kablo TV aboneliğiyle kullanılabilir. HBO Go externalSubscription

İzleme işlemleri için ödeme duvarı türü

İzleme işlemleri için içerik ödeme duvarı türünü belirtmek üzere İşlem erişimi spesifikasyonu bölümünde category özelliğini kullanın:

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

Dinleme işlemleri için ödeme duvarı türü

Dinleme işlemleri için içerik ödeme duvarı türünü belirtmek üzere offer nesnesindeki category özelliğini kullanın:

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

Coğrafi alan

İçeriğin kullanılabildiği coğrafi alanları belirtmeniz gerekir. Aşağıdaki özelliklerden birini veya her ikisini de kullanın:

Cihaz konumu, eligibleRegion içinde belirtilen herhangi bir bölgedeyse ve ineligibleRegion içinde belirtilen herhangi bir bölgede değilse kullanıcı içeriğe erişebilir.

eligibleRegion ve ineligibleRegion özellikleri aşağıdaki değerlere izin verir:

İçerik dünya genelinde kullanılabiliyorsa eligibleRegion için aşağıdaki özel değeri kullanın:

"eligibleRegion": "EARTH",

eligibleRegion kullanım alanları

eligibleRegion özelliğinin kullanım alanı örnekleri:

  • 1. örnek: Ülke listesi içeren eligibleRegion.
  • 2. örnek: Posta kodu listesi içeren GeoShape nesnesiyle eligibleRegion.
  • 3. örnek: Adres sıralama bölgesi (FSA) kodlarının listesini içeren bir GeoShape nesnesiyle eligibleRegion.
  • 4. örnek: Bir TPA kimliği içeren GeoShape nesnesiyle eligibleRegion.
  • 5. örnek: GeoShape nesnelerin listesini içeren eligibleRegion. Her biri bir DMA kimliği içerir.
  • 6. örnek: Posta kodları karartılmış ineligibleRegion.

1. Örnek

eligibleRegion ile ülke listesi:


"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. Örnek

Posta kodu listesi içeren bir GeoShape nesnesiyle eligibleRegion:


"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. Örnek

eligibleRegion ile GeoShape nesnesi: Bu nesne, adres sıralama bölgesi (FSA) kodlarının listesini içerir:


"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. Örnek

eligibleRegion ile GeoShape nesnesi içeren bir:


"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"
      }
    ]
  }
}

Örnek 5

GeoShape nesne listesi içeren eligibleRegion. Her biri bir DMA kimliği içerir:


"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. örnek

Posta kodlarının karartıldığı 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"
    ]
  }
}

Yetki tanımlayıcısı

Hak tanımlayıcısı entitlementId, medya kataloğunuzdaki bir içerik grubuna erişimi temsil eden bir dizeyi ifade eder. Google, bir kullanıcının içeriğinize erişimi olup olmadığını belirlemek için aşağıdaki adımları uygular:

  1. Kullanıcının hak tanımlayıcılarını almak için Haklar uç noktanıza bir API çağrısı yaparız.
  2. İçeriğin gerekli hak tanımlayıcılarını Media Actions feed'inizden ararız.
  3. Bir kullanıcının entitlementId değerini, feed'inizdeki medya aboneliği nesnesinin identifier özelliğiyle eşleştiririz. En az bir entitlementId eşleşirse kullanıcının içeriğe erişebileceğine karar veririz.
Şekil 2. Kullanıcının hak tanımlayıcılarından biri, içeriğin gerekli hak tanımlayıcısıyla eşleşiyor.

Google, entitlementId için aşağıdaki söz dizimini kullanmanızı önerir:

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

Söz dizimi örnekleri:

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

Hak tanımlayıcısı örneği

MediaExampleCompany'nin feed'inde, Movie XYZ için example.com:basic entitlementId gerektiği belirtiliyor.

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

Yaygın erişim kullanım alanları

Yaygın erişim kullanım alanları şunlardır:

  • Ücretsiz (giriş yapılması gerekmez): İçerik, giriş yapma, abonelik veya satın alma işlemi olmadan kullanılabilir.
  • Ücretsiz (giriş yapılması gerekir): İçerik için kullanıcıların giriş yapması gerekir ancak abonelik gerekmez.
  • Tek katmanlı abonelik: İçerik için abonelik gerekir. Abonelik paketlerinden bağımsız olarak tüm aboneler, filmler veya bölümler gibi aynı içeriklere erişebilir.
  • Çok katmanlı abonelik: İçerik için abonelik gerekir. Aboneler, abonelik katmanlarına göre filmler veya bölümler gibi farklı içeriklere erişebilir. Örneğin, Gümüş ile Altın.
  • Eklenti aboneliği: İçerik için abonelik gerekir. Aboneler, normal aboneliklerine ek olarak premium içerik ekleyebilir.
  • Tek seferlik satın alma: İçerik satın alındıktan sonra kullanıcı tarafından süresiz olarak kullanılabilir.
  • Canlı TV: Abonelik, yerel, ulusal ve premium kanallara erişim sağlar.
  • Üçüncü taraf aboneliği: İçerik için kullanıcının kablolu TV sağlayıcısıyla giriş yapması gerekir.

Ücretsiz (giriş yapmanız gerekmez)

Giriş yapmanız gerekmez

İçerik, giriş veya abonelik olmadan kullanılabilir.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • category değerini nologinrequired olarak ayarlayın.
  • expectAcceptanceOf eklemeyin.

Ücretsiz (giriş yapılması gerekir)

Giriş yapılması gerekiyor

İçerik, kullanıcıların giriş yapmasını gerektiriyor ancak abonelik gerektirmiyor.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • category değerini free olarak ayarlayın.
  • expectAcceptanceOf eklemeyin.

Tek katmanlı abonelik

Tek katmanlı abonelik modelinde, servis sağlayıcının tek bir abonelik katmanı vardır. Tüm aboneler, abonelik paketlerinden bağımsız olarak filmler veya bölümler gibi aynı içeriklere erişebilir.


{
  "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"
    }
  }
}

Çok katmanlı abonelik

Katmanlı abonelik modelinde, bir servis sağlayıcının Altın, Gümüş ve Bronz gibi birden fazla abonelik katmanı vardır. Üst düzey aboneliği olan kullanıcılar, alt düzeydeki tüm içeriklere erişebilir. Ancak daha düşük katmanlı aboneliği olan kullanıcılar üst katman içeriklerine erişemez.

Şekil 3. Katmanlı abonelik modeli ve hakların temsili.

Aşağıdaki senaryoyu düşünün:

  • Jale, Gold katmanına abone olur. Yetkileriniz uç noktası aşağıdaki entitlementId tanımlayıcılarını döndürür:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • Cem, Bronz katmanına abone oluyor. Haklarınız uç noktası aşağıdaki entitlementId değerlerini döndürür:
    • example.com:bronze
  • Medya İşlemleri feed'iniz aşağıdaki koşulları karşılamalıdır:
    • A filmi için example.com:bronze gerekir.
    • B filmi için example.com:silver gerekir.

Bu senaryoda Google, Jane ve John için aşağıdaki erişim düzeylerini belirler:

  • Hem Ayşe hem de Ali, A Filmi'ne erişebilir.
  • Ayşe, B Filmi'ne erişebilir ancak Ali erişemez.
{
  "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"
    },
    ...
  }
}

Eklenti aboneliği

Eklenti aboneliği modelinde, bir servis sağlayıcı kullanıcıların haklarını genişletmesine ve temel aboneliğe kanallar eklemesine olanak tanır. Kullanıcılar istedikleri kadar kanal ekleyebilir.

Şekil 4. Eklenti aboneliği modeli ve bu modelin hakları temsil etme şekli.

Aşağıdaki senaryoyu düşünün:

  • Jale, Basic aboneliğinin yanı sıra PRO ve Sportz aboneliklerine de sahip. Haklar uç noktanız aşağıdaki entitlementId tanımlayıcıları döndürüyor:
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • John'un yalnızca Basic aboneliği var. Haklarınız uç noktası aşağıdaki entitlementId değerlerini döndürür:
    • example.com:basic
  • Medya İşlemleri feed'iniz aşağıdaki koşulları karşılamalıdır:
    • A filmi için example.com:basic gerekir.
    • B filmi için example.com:pro gerekir.

Bu senaryoda Google, Jane ve John için aşağıdaki erişim düzeylerini belirler:

  • Hem Ayşe hem de Ali, A Filmi'ne erişebilir.
  • Ayşe, B Filmi'ne erişebilir ancak Ali erişemez.
{
  "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"
      },
    }
  }
}

Tek seferlik satın alım

Satın alma

İçerik, satın alma işleminden sonra süresiz olarak kullanılabilir.


{
  "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 değerini purchase olarak ayarlayın.
  • Satın alma işleminin fiyatını belirtmek için expectAcceptanceOf öğesini actionAccessibilityRequirement içine ekleyin.

Kiralama

İçerik, satın alma işleminden sonra sınırlı bir süreliğine kullanılabilir.


{
  "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 değerini rental olarak ayarlayın.
  • Kiralama fiyatını belirtmek için expectAcceptanceOf öğesini actionAccessibilityRequirement içine ekleyin.

Canlı TV

Medya işlemleri akışında, aşağıdaki iki kullanıcı koşuluna göre bir canlı TV kanalına veya etkinliğine erişimi kısıtlayabilirsiniz:

  • Kullanıcının cihazının konumu

    TV kanalına erişimi kısıtlamak için kullanıcıların kanala erişebildiği alanı belirtin. Bu koşul genellikle yerel yayın yapan TV kanalları için geçerlidir.

  • Kullanıcının hesap durumu

    Bir TV kanalına erişim, kullanıcının hesap düzeyindeki ayarlarına bağlıysa kısıtlamayı temsil etmek için yetkilendirme tanımlayıcılarını kullanın.

    Bu koşul genellikle aşağıdaki kullanım alanlarında geçerlidir:

    • Paket: Ulusal kanallar genellikle paketlere dahil edilir ve kullanıcılar hangi pakete abone olmak istediklerini seçer.
    • Eklenti: Bazı premium kanallar, kullanıcıların aboneliklerine ek kanalları seçerek eklemesini gerektirir.
    • Bölgesel Spor Ağı (RSN): RSN'ler genellikle kullanıcının "ev" konumuyla ilişkilendirilir. Kullanıcılar, "ev" konumlarının dışına seyahat ettiklerinde bile bölgesel spor ağında içerik izleyebilir.

Üçüncü taraf aboneliği

Üçüncü taraf aboneliği

İçerik, farklı bir hizmetin aboneleri tarafından kullanılabilir.


{
  "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"
    }
  }
}
  • Abonelerin kimliğini farklı bir hizmetin doğruladığını belirtmek için authenticator simgesini ekleyin. Örneğin, HBO GO için kablo sağlayıcıdan abonelik gerekir.

Ortak katman paketleri

Ortak katman içerikleri, abonelik paketlerinden bağımsız olarak tüm aboneler tarafından kullanılabilir. Ortak katman, category subscription olan tüm içerikler için geçerlidir. category özelliği hakkında daha fazla bilgi için Ödeme duvarı türü bölümüne bakın.

Neden ortak katman paketi gerekiyor?

Birden fazla Google platformu, kullanıcılara TV programı ve film önerileri sunar. Google'ın, maliyetle ilgili kullanıcı beklentilerini belirleyebilmesi için ortak katmanın kullanımıyla tüm abonelerin erişebileceği içerikleri anlaması gerekir. Google, belirli abonelik paketlerine sahip abonelerin hangi içeriklere erişebildiğini de anlamalıdır.

Google, entitlement API'yi desteklemediğiniz sürece ortak katmanda sunulan içerikleri kullanmanızı önerir. API, Google'ın her kullanıcının erişebileceği, yaygın olmayan katmanlardaki içerikleri anlamasına olanak tanır.

Ne zaman ortak katman paketi oluşturmalıyım?

Hizmetinizde tüm abonelerin erişebileceği içerikler sunuluyorsa ortak bir katman paketi gerekir. Yalnızca tek bir paket sunan hizmetler ve birden fazla paket veya eklenti sunan hizmetler bu kapsamdadır.

Tüm abonelerin erişebileceği içeriği olmayan sağlayıcıların ortak katman paketi oluşturması gerekmez. Buna örnek olarak, tüm paketlerinde birbirini dışlayan içerikler sunan servis sağlayıcılar verilebilir.

Yaygın katman örnekleri

Aşağıda, ortak katmana ilişkin örnekler verilmiştir.

Katmanlı abonelik

Katmanlı abonelik modelinde, bir servis sağlayıcının Altın, Gümüş ve Bronz gibi birden fazla abonelik katmanı vardır. Üst katman aboneliği olan kullanıcılar, alt katmanlardaki tüm içeriklere erişebilir. Daha düşük katmanlı aboneliği olan kullanıcılar, üst katmandaki içeriklere erişemez. Aşağıdaki resimde paket yapısına dair bir örnek verilmiştir.

Altın katman, Gümüş katmanın tüm içeriğini, Gümüş katman ise Bronz katmanın tüm içeriğini barındırır.
Şekil 5. Kademeli abonelik paketi yapısı.

Aşağıdaki kod örneğinde, tüm kullanıcılar bu katmandaki tüm içeriklere erişebildiği için bronz paket ortak katmandır.

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

Eklentiler

Eklenti aboneliği modelinde, bir servis sağlayıcı kullanıcıların haklarını genişletmesine ve temel bir aboneliğe kanallar eklemesine olanak tanır. Kullanıcılar istedikleri kadar kanal ekleyebilir. Aşağıdaki resimde paket yapısına dair bir örnek verilmiştir.

Her kullanıcı Temel kanal ile başlar ve PRO, Sportz ve Moviemax kanallarının herhangi bir kombinasyonunu ekleyebilir.
Şekil 6. Eklentiler abonelik paketi yapısı.

Tüm kullanıcıların erişebildiği ve ücretsiz bir kanalınız varsa paketi ortak katman paketiyle birleştirebilirsiniz.

Aşağıdaki kod örneğinde, tüm kullanıcılar bu paketteki tüm içeriklere erişebildiği için temel paket ortak katmandır.

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

Çakışan içeriklere sahip paketler

Paketlerin kesişen içeriklere sahip olduğu bir içerik modelinde, bir servis sağlayıcı diğer paketlerdeki bazı içerikleri içeren paketler satar. Aşağıdaki resimde paket yapısı örneği verilmiştir.

1, 2 ve 3 numaralı paketlerin kesişiminin &quot;Ortak Katman&quot; olarak etiketlendiği bir Venn şeması.
Şekil 7. Çakışan içeriklere sahip paket yapısı.

Aşağıdaki kod örneğinde, sağlayıcı üç paket sunmaktadır. Bu paketlerin bazılarında içerikler kesişmektedir. Bu durumda, ortak katmanı temsil eden dördüncü bir paket gerekir. Üç paketteki tüm içerikler bu pakette yer almalıdır.

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

Çakışan içeriklere sahip olmayan paketler

Tüm içerik paketlerinin kesişmediği bir içerik modelinde, servis sağlayıcı diğer paketlerden içerik içermeyen paketler satar. Aşağıdaki resimde paket yapısı örneği verilmiştir.

1, 2 ve 3 numaralı paketler tamamen ayrıdır.
Şekil 8. Çakışan içeriklerin olmadığı paket yapısı.

Aşağıdaki örnekte, sağlayıcı üç paket sunuyor ve bu paketlerin hiçbirinde ortak içerik yok. Ortak bir katman paketi gerekmez.

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

Haklar uç noktası

Kullanıcıyla ilişkili hakları döndüren bir HTTPS uç noktası barındırmak için bu bölümdeki bilgileri kullanın.

Ön koşul

Başlamadan önce hizmetinizin Google ile OAuth 2.0 akışını desteklediğini doğrulayın.

İstek

Google, kullanıcının haklarını almak için kullanıcının OAuth jetonunu içeren bir istek gönderir. Uç noktanız, kullanıcıyı bu OAuth jetonuna göre tanımlamalıdır. Aşağıdaki örneğe bakın:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>

Yanıt

Uç noktanız, aşağıdaki özelliklere sahip bir yanıt döndürmelidir:

Mülk
subscription

Zorunlu

Bu, kök yanıttaki bir alandır.

subscription.type

Zorunlu

Bu özelliğin değerleri şunlar olabilir:

  • ActiveSubscription: Kullanıcının, sağlayıcıya etkin bir aboneliği olmalıdır.
  • ActiveTrial: Kullanıcının, sağlayıcının etkin bir deneme sürümü vardır.
  • InactiveSubscription: Kullanıcının etkin bir aboneliği veya etkin bir deneme süresi yok.
subscription.expiration_date

İsteğe bağlı

Bu hakka ait son kullanma tarihi (saat dilimini de içeren ISO 8601 biçiminde). Daha fazla bilgi için Geçerlilik tarihleri başlıklı makaleyi inceleyin.

entitlements

İsteğe bağlı

Bu kök özellik, kullanıcının sahip olduğu entitlementId değerlerini içerir.

entitlements.entitlement

Akış kataloğunuza erişim, abonelik türüne göre değişiyorsa zorunludur.

Bu mülk entitlementId içeriyor. Daha fazla bilgi için Hak kimliği bölümünü inceleyin.

entitlements.expiration_date

İsteğe bağlı

Saat dilimini de içeren, ISO 8601 biçiminde belirtilen aboneliğin sona erme tarihi. Daha fazla bilgi için Geçerlilik tarihleri başlıklı makaleyi inceleyin.

Geçerlilik bitiş tarihi

Bir uç nokta yanıtında, son kullanma tarihleriyle ilgili iki özellik vardır: subscription.expiration_date ve entitlements.expiration_date. Bunlardan birini veya hiçbirini ekleyebilirsiniz ancak ikisini birden ekleyemezsiniz. Hangisini kullanacağınız, abonelik modelinize bağlıdır.

Abonelik modeli
Tüm aboneler, yayın kataloğunuza aynı şekilde erişir. entitlements özelliğini belirtmeniz gerekmediğinden subscription.expiration_date özelliğini belirtin.

Akış kataloğunuza erişim, kullanıcının abonelik ayrıntılarına göre değişir.

Abonelik modelinizde zaman içinde geçerliliğini yitiren birden fazla katman veya eklenti varsa aşağıdakilerden birini yapın:

  • Tüm entitlements.entitlement değerlerinin süresi aynı anda doluyorsa subscription.expiration_date değerini belirtin.
  • Bazı entitlements.entitlement değerlerinin geçerliliği farklı zamanlarda sona eriyorsa entitlements.expiration_date değerini belirtin.

Örnek yanıtlar

Aşağıda, farklı abonelik durumlarına ilişkin örnek yanıtlar verilmiştir:

  • Etkin abonelik
  • Geçerlilik bitiş tarihi olan etkin abonelik
  • Abonelik yok
  • Birden fazla katman veya eklentiye etkin abonelikler

Etkin abonelik

Etkin abonelik

Bir kullanıcının example.com adresine etkin bir aboneliği var. Bu durumda, abonelik türünden bağımsız olarak tüm aboneler yayın kataloğunuzun tamamına erişebilir.


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

Geçerlilik bitiş tarihi olan etkin abonelik

Geçerlilik bitiş tarihi olan etkin abonelik

Kullanıcının example.com için etkin bir aboneliği var ve aboneliğin geçerlilik bitiş tarihi var. Bu durumda, tüm aboneler abonelik türlerinden bağımsız olarak tüm yayın kataloğunuza erişebilir.


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

Abonelik yok

Abonelik yok

Kullanıcının example.com aboneliği yok.


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

Birden fazla katman veya eklentiye etkin abonelikler

Birden fazla katman veya eklenti için etkin abonelikler

Bir kullanıcının belirli bir tarihe kadar example.com:premium aboneliği var.


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

Sıklık sınırlaması

Google, kullanıcının hak bilgileriyle ilgili yenileme işlemini altı saatte bir yapar. Google, saniye başına maksimum sorgu sayısını (QPS) düzeltmek için sorguları zaman içinde uç noktanıza eşit şekilde dağıtır. Bu nedenle, aşağıdaki formülle uç noktanız için beklenen ortalama QPS'yi tahmin edebilirsiniz:

Beklenen ortalama QPS = <toplam kullanıcı sayısı> / 21.600 saniye (6 saat x 60 dakika x 60 saniye)

Çok sayıda kullanıcıyı destekliyorsanız Google, 6 saatlik aralığı ayarlayabilir. Gerekirse yapılandırmayı görüşmek için Google ile iletişime geçin.

Google ile iletişime geçin

Uç noktanız hazır olduğunda uç noktanın URL'sini bildirmek için Google ile iletişime geçin.

İşlem erişimi belirtme özellikleri

Referans bilgileri için işlem erişimi spesifikasyon özellikleri bölümüne bakın.