Kullanıcılar, mevcut abonelik içerikleri gibi erişebildikleri içerikleri izlemeyi veya dinlemeyi tercih eder. Google, kullanıcının uygulamanızda veya platformunuzda hangi içeriğe erişebileceğini biliyorsa kullanıcıyı bu içeriğe yönlendirmek için daha iyi bir arama sonucu ya da yanıt oluşturabilir.

İçerik erişimi şartlarını belirleme
Kataloğunuzdaki her içerik paketi için erişim şartını belirtmeniz gerekir. Bunu 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ı mı gerekiyor?
Erişim koşulu zaman içinde değişir mi?
Erişim şartı cihaz konumuna bağlı mı?
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ş yapmış olması gerekir ancak ücretli aboneliği olması gerekmez. | Vudu (AVOD) | free |
Kullanıcının etkin bir aboneliği olmalıdır. Erişim, abonelik katmanından bağımsızdır. | Netflix |
|
Kullanıcının etkin bir aboneliği olmalıdır. Erişim, abonelik katmanına bağlıdır. | Hulu (eklentiler) |
|
İçerik, satın alma işleminden sonra sınırlı bir süre için 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 bölgeleri belirtmeniz gerekir. Aşağıdaki özelliklerden birini veya her ikisini de kullanın:
- Bir Action access specification nesnesinin
eligibleRegion
özelliği. Bu özellik zorunludur. - Bir Action access specification nesnesinin
ineligibleRegion
özelliği.
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:
Country
,City
veState
listesi.GeoShape
nesnesi. Ayrıntılı şartlar içinGeoShape
özellikleri bölümüne bakın.GeoShape
nesnenin listesi.
İç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ı örneklerini aşağıda bulabilirsiniz:
- 1. örnek:
eligibleRegion
ülke listesiyle. - 2. örnek: Posta kodu listesi içeren bir
eligibleRegion
ileGeoShape
nesnesi. - 3. örnek:
eligibleRegion
, Adres Sıralama Bölgesi (FSA) kodlarının listesini içeren birGeoShape
nesnesiyle. - 4. örnek: TPA kimliği içeren bir
eligibleRegion
ileGeoShape
nesnesi. - 5. örnek:
GeoShape
nesnelerinin listesini içereneligibleRegion
. Her biri bir DMA kimliği içerir. - 6. örnek: Posta kodlarının karartıldığı
ineligibleRegion
.
1. Örnek
eligibleRegion
Ülke listesiyle:
"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: 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
DMA kimliği içeren GeoShape
nesnesiyle birlikte eligibleRegion
:
"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
nesnelerinin listesini içeren eligibleRegion
.
Her biri bir TPA 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
ineligibleRegion
ile karartılmış posta kodları:
"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" ] } }
Hak 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:
- Kullanıcının hak tanımlayıcılarını almak için Haklar uç noktanıza bir API çağrısı yaparız.
- İçeriğin gerekli hak tanımlayıcılarını Media Actions feed'inizden ararız.
- Kullanıcının
entitlementId
değerini, feed'inizdeki medya aboneliği nesnesininidentifier
özelliğiyle eşleştiririz. En az birentitlementId
eşleşirse kullanıcının içeriğe erişebileceğini belirleriz.

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, gösterildiği gibi 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ş yapmadan, abonelik olmadan veya satın alma işlemi yapmadan 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. Tüm aboneler, abonelik paketlerinden bağımsız olarak 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 farklı içeriklere (filmler veya bölümler) 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 imkanı sunar.
- Üçüncü taraf aboneliği: İçerik için kullanıcının kablo TV sağlayıcısıyla oturum açması gerekir.
Ücretsiz (giriş yapılması 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ğerininologinrequired
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ğerinifree
olarak ayarlayın.expectAcceptanceOf
eklemeyin.
Tek katmanlı abonelik
Tek katmanlı abonelik modelinde, bir 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 hizmet 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 daha üst katmanlı içeriğe erişemez.

Aşağıdaki senaryoyu değerlendirin:
- Jale, Gold katmanına abone olur. Haklarınız
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.
- A filmi için
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şebilirken Ali erişemiyor.
{ "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.

Aşağıdaki senaryoyu değerlendirin:
- Defne'nin Basic aboneliğine ek olarak PRO ve Sportz abonelikleri de var. Haklar uç noktanız aşağıdaki
entitlementId
tanımlayıcılarını döndürüyor:example.com:basic
example.com:pro
example.com:sportz
- Cem'in yalnızca Temel 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.
- A filmi için
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şebilirken Ali erişemiyor.
{ "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ğerinipurchase
olarak ayarlayın.- Satın alma fiyatını belirtmek için
expectAcceptanceOf
özelliğiniactionAccessibilityRequirement
içine ekleyin.
Kiralama
İçerik, satın alma işleminden sonra sınırlı bir süre için 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ğerinirental
olarak ayarlayın.- Kiralama fiyatını belirtmek için
actionAccessibilityRequirement
özelliğineexpectAcceptanceOf
değerini ekleyin.
Canlı TV
Medya İş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şebileceğ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ı belirtmek için yetkilendirme tanımlayıcılarını kullanın.
Bu koşul genellikle aşağıdaki kullanım alanları için 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?
Google Arama, Android TV ve Google Asistan dahil olmak üzere birçok Google ürünü, kullanıcılara TV ve film önerileri sunar. Google, maliyetle ilgili kullanıcı beklentilerini belirlemek için ortak katmanın kullanımıyla tüm abonelerin erişebileceği içeriği anlamalıdır. 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 bulunan 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 katman paketi gerekir. Buna yalnızca tek bir paket sunan hizmetler ve birden fazla paket veya eklenti sunan hizmetler dahildir.
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.
Sık kullanılan katman örnekleri
Aşağıda, yaygın katmana ilişkin örnekler verilmiştir.
Katmanlı abonelik
Katmanlı abonelik modelinde, bir hizmet 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, daha yüksek katmandaki içeriklere erişemez. Aşağıdaki resimde paket yapısı örneği gösterilmektedir.

Aşağıdaki kod örneğinde, tüm kullanıcılar bu katmandaki tüm içeriklere erişebildiğinden 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 aboneliğe kanallar eklemesine olanak tanır. Kullanıcılar istedikleri kadar kanal ekleyebilir. Aşağıdaki resimde paket yapısı örneği gösterilmektedir.

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çeriğe erişebildiğinden 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.

Aşağıdaki kod örneğinde, sağlayıcı üç paket sunuyor. Bu paketlerin bazılarında içerikler kesişiyor. 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.

Aşağıdaki örnekte, sağlayıcı üç paket sunuyor ve bu paketlerin hiçbirinde ortak içerik yok. Ortak 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ı
Bu bölümdeki bilgileri kullanarak, bir kullanıcıyla ilişkili hakları döndüren bir HTTPS uç noktası barındırı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:
|
subscription.expiration_date |
İsteğe bağlı Bu hakka ait son kullanma tarihi, saat dilimini de içeren ISO 8601 biçiminde. Daha ayrıntılı bilgi için Sona erme tarihleri başlıklı makaleyi inceleyin. |
entitlements |
İsteğe bağlı Bu kök özellik, kullanıcının sahip olduğu |
entitlements.entitlement |
Yayın kataloğunuza erişim, abonelik türüne göre değişiyorsa zorunludur. Bu özellik |
entitlements.expiration_date |
İsteğe bağlı Bu aboneliğin sona erme tarihi (saat dilimi dahil) ISO 8601 biçiminde. Daha ayrıntılı bilgi için Sona erme tarihleri başlıklı makaleyi inceleyin. |
Geçerlilik bitiş tarihi
Uç nokta yanıtında, geçerlilik bitiş 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şebilir. | 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:
|
Örnek yanıtlar
Aşağıda, farklı abonelik durumlarına ilişkin örnek yanıtlar verilmiştir:
- Etkin abonelik
- Son kullanma tarihi olan etkin bir abonelik
- Abonelik gerekmez
- Birden fazla katman veya eklenti için etkin abonelikler
Etkin abonelik
Etkin abonelik
Bir kullanıcının example.com adresine etkin bir aboneliği var. Bu durumda, abonelik türü ne olursa olsun tüm aboneler yayın kataloğunuzun tamamına erişebilir.
{ "subscription" : { "type": "ActiveSubscription", } }
Son kullanma tarihi olan etkin bir abonelik
Geçerlilik bitiş tarihi olan etkin abonelik
Bir kullanıcının example.com adresine etkin bir aboneliği var ve aboneliğin geçerlilik bitiş tarihi 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", "expiration_date": "2019-11-10T10:00:00Z" } }
Abonelik gerekmez
Abonelik yok
Kullanıcının example.com aboneliği yoksa
{ "subscription" : { "type": "InactiveSubscription" } }
Birden fazla katman veya eklenti için etkin abonelikler
Birden fazla katman veya eklenti için etkin abonelikler
Kullanıcının belirli bir tarihe kadar example.com:premium
aboneliği vardır.
{ "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 bilgileri yenileme sıklığını altı saate kadar çıkarabilir. Saniyedeki maksimum sorgu sayısını (QPS) düzeltmek için Google, sorguları zaman içinde uç noktanıza eşit olarak 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 bağlantı kurun
Uç noktanız hazır olduğunda uç noktanın URL'sini bildirmek için Google ile iletişime geçin.
İşlem erişimi spesifikasyon özellikleri
Referans bilgileri için işlem erişimi spesifikasyon özellikleri bölümüne bakın.