Kullanıcılar, mevcut abonelik içerikleri gibi zaten 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 bilirse kullanıcıyı bu içeriğe yönlendirmek için daha iyi bir arama sonucu veya yanıt oluşturabilir.

İçerik erişimi koşullarını belirleme
Kataloğunuzdaki her içerik paketi için erişim şartını belirtmeniz gerekir. Bu süreçte 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 abone 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 İzleme İşlemleri: Kullanıcıların içeriği kiralaması veya satın alması gerekiyor mu?
Erişim şartı 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ı ödemeli erişim türleri ayrıntılı olarak açıklanmıştır:
Ödeme duvarı türü | Örnek | Kategori |
---|---|---|
Satın alma veya giriş yapmanıza gerek yoktur. | 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 boyunca 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 ödemeli erişim türünü belirtmek üzere İşlem erişim spesifikasyonunda category
mülkünü 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 ödemeli duvar türünü belirtmek üzere teklif nesnesinde category
mülkünü 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 bölge
İçeriğin kullanılabildiği coğrafi alanları belirtmeniz gerekir. Aşağıdaki özelliklerden birini veya ikisini birden kullanın:
- İşlem erişim özelliği nesnesinin
eligibleRegion
özelliği. Bu özellik gereklidir. - İşlem erişim özelliği nesnesinin
ineligibleRegion
özelliği.
Cihaz konumu eligibleRegion
'te belirtilen bir bölgedeyse ve ineligibleRegion
'te belirtilen 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
öğelerinin listesi.- Bir
GeoShape
nesnesi. Ayrıntılı gereksinimler içinGeoShape
mülkleri bölümüne bakın. GeoShape
nesnesi listesi.
İçerik dünya genelinde kullanılabiliyorsa eligibleRegion
için aşağıdaki özel değeri kullanın:
"eligibleRegion": "EARTH",
eligibleRegion kullanım alanları
Aşağıda, eligibleRegion
mülkünün kullanım alanı örnekleri verilmiştir:
- 1. örnek: Ülkelerin listesini içeren
eligibleRegion
. - 2. Örnek: Posta kodlarının listesini içeren bir
GeoShape
nesnesi içereneligibleRegion
. - 3. Örnek: Adres sıralama bölgesi (FSA) kodlarının listesini içeren bir
GeoShape
nesnesi içereneligibleRegion
. - 4. Örnek: DMA kimliği içeren bir
GeoShape
nesnesi içereneligibleRegion
. - 5. örnek:
GeoShape
nesnelerinin listesini içereneligibleRegion
. Her biri bir DMA kimliği içerir. - 6. örnek: Posta kodları gizlenmiş
ineligibleRegion
.
1. Örnek
eligibleRegion
ile birlikte ü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 kodlarının listesini içeren bir GeoShape
nesnesi içeren 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
Adres sıralama bölgesi (FSA) kodlarının listesini içeren bir GeoShape
nesnesi içeren 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/area2", "addressCountry": "CA", "postalCode": [ "1A1", "K1A" ] } }
4. Örnek
DMA kimliği içeren bir GeoShape
nesnesi olan eligibleRegion
:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/abcd/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area3", "addressCountry": "US", "identifier": [ { "@type": "PropertyValue", "propertyID": "DMA_ID", "value": "501" } ] } }
Örnek 5
GeoShape
nesnesi listesi 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
Posta kodları gizlenmiş ineligibleRegion
:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "Country", "name": "US" }, "ineligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
Hak tanımlayıcı
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şip erişemediğini belirlemek için aşağıdaki adımları uygular:
- Kullanıcının hak tanımlayıcılarına erişmek için Hak uç noktanıza API çağrısı yaparız.
- İçeriğin gerekli yetki tanımlayıcılarını MediaActions feed'inizden ararız.
- Kullanıcının
entitlementId
değerini, feed'inizdeki medya aboneliği nesnesininidentifier
mülküyle 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, Movie XYZ
için example.com:basic
entitlementId
gerektiğini belirtilmiştir:
{ "@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 ... }, ... } }, ... }
Yaygın erişim kullanım alanları
Aşağıda, yaygın erişim kullanım alanları verilmiştir:
- Ücretsiz (giriş gerekmez): İçerik, giriş, abonelik veya satın alma işlemi gerektirmez.
- Ücretsiz (giriş gerekli): İçerik için kullanıcıların oturum açması 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 katmanına göre filmlere veya bölümlere erişebilir. Örneğin, Gümüş ve Altın.
- Ek abonelik: İçerik için abonelik gerekir. Aboneler, normal aboneliklerine premium içerik ekleyebilir.
- Tek seferlik satın alma: İçerik satın alındıktan sonra kullanıcı süresiz olarak erişebilir.
- Canlı TV: Abonelik, yerel, ulusal ve premium kanallara erişim imkanı sunar.
- Üçüncü taraf aboneliği: İçerik için kullanıcının kablo sağlayıcısıyla oturum açması gerekir.
Ücretsiz (giriş yapılması gerekmez)
Giriş yapmanıza gerek yoktur
İç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ş gerekli)
Giriş yapılması gerekiyor
İçerik için kullanıcıların oturum açması gerekir ancak abonelik gerekmez.
{ "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, servis sağlayıcının tek bir abonelik katmanı vardır. Tüm aboneler, abonelik paketlerinden bağımsız olarak filmlere veya bölümlere 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" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
Çok katmanlı abonelik
Katmanlı abonelik modelinde, hizmet sağlayıcının Gold, Silver ve Bronze 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 alt düzey aboneliği olan kullanıcılar üst düzey içeriklere erişemez.

Aşağıdaki senaryoyu değerlendirin:
- Jale, Gold katmanına abone olur. Haklarınızın 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 olur. Haklarınızın uç noktası, aşağıdaki
entitlementId
değerini döndürüyor:example.com:bronze
- Media Actions feed'iniz aşağıdaki şartları açıklar:
- Film A için
example.com:bronze
gerekir. - Film B için
example.com:silver
gerekir.
- Film A için
Bu senaryoda Google, Canan ve Cem için aşağıdaki erişim düzeylerini belirler:
- Hem Ayşe hem de Cem Film A'ya erişebilir.
- Ayşe, Film B'ye erişebilir ancak Can erişemez.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Ek abonelik
Ek abonelik modelinde, hizmet sağlayıcı kullanıcıların yararlanma haklarını genişletmesine ve temel aboneliğe kanal eklemesine olanak tanır. Kullanıcılar istedikleri kadar kanal ekleyebilir.

Aşağıdaki senaryoyu değerlendirin:
- Cansu, Basic aboneliğine ek olarak PRO ve Sportz aboneliklerine de sahiptir. Hak talebi uç noktanız aşağıdaki
entitlementId
tanımlayıcılarını döndürür:example.com:basic
example.com:pro
example.com:sportz
- Cem yalnızca Temel aboneliğine sahip. Haklarınızın uç noktası, aşağıdaki
entitlementId
değerini döndürüyor:example.com:basic
- Media Actions feed'iniz aşağıdaki şartları açıklar:
- Film A için
example.com:basic
gerekir. - Film B için
example.com:pro
gerekir.
- Film A için
Bu senaryoda Google, Canan ve Cem için aşağıdaki erişim düzeylerini belirler:
- Hem Ayşe hem de Cem Film A'ya erişebilir.
- Ayşe, Film B'ye erişebilir ancak Can 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 } } } }
Tek seferlik satın alma
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 işleminin fiyatını belirtmek için
expectAcceptanceOf
değeriniactionAccessibilityRequirement
içine ekleyin.
Kiralama
İçerik, satın alma işleminden sonra sınırlı bir süre boyunca 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.- Kiralamanın fiyatını belirtmek için
actionAccessibilityRequirement
içineexpectAcceptanceOf
ekleyin.
Canlı TV
Medya İşlemleri feed'inde, canlı TV kanalına veya etkinliğe erişimi aşağıdaki iki kullanıcı koşuluna göre kısıtlayabilirsiniz:
-
Kullanıcının cihaz konumu
TV kanalına erişimi kısıtlamak için kullanıcıların 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 ayarına bağlıysa kısıtlamayı temsil etmek için hak tanımlayıcılar 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.
- Ek özellik: Bazı premium kanallar, kullanıcıların aboneliklerine seçtikleri ek kanalları eklemelerini 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ışındayken bile RSN'de içerik izleyebilir.
Üçüncü taraf aboneliği
Üçüncü taraf aboneliği
İçerik, farklı bir hizmetten abonelere sunulmaktadır.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "externalsubscription" "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription":{ "@type": "MediaSubscription", "@id": "https://www.example.com/faq", "name": "Example", "sameAs": "https://www.example.com/faq", "authenticator": { "@type": "Organization", "name": "TVE" } }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Abonelerin kimliğini farklı bir hizmetin doğruladığını belirtmek için
authenticator
ekleyin. Örneğin, HBO GO için kablo sağlayıcıdan abonelik alınması gerekir.
Sık kullanılan katman paketleri
Ortak katman içerikleri, abonelik paketlerinden bağımsız olarak tüm aboneler tarafından kullanılabilir. Ortak katman, subscription
category
sahip tüm içerikler için geçerlidir. category
mülkü hakkında daha fazla bilgi için Ödeme duvarı türü bölümünü inceleyin.
Why is a common tier package required?
Google Arama, Android TV ve Google Asistan gibi birden fazla Google ürünü kullanıcılara TV ve film önerileri sunar. Google, maliyetle ilgili kullanıcı beklentilerini belirlemek için ortak katman kullanılarak tüm abonelerin hangi içeriklere erişebileceğini anlamalıdır. Google, belirli abonelik paketlerine sahip abonelerin hangi içeriklere erişebileceğini de anlamalıdır.
Google, entitlement API'yi desteklemediğiniz sürece ortak katmanda bulunan başlıkları önerir. API, Google'ın her kullanıcının erişebildiği ortak olmayan düzeydeki başlıkları anlamasını sağlar.
Ne zaman ortak katman paketi oluşturmalıyım?
Hizmetiniz tüm abonelerin erişimine açık içerikler sunuyorsa ortak katman paketi gerekir. Buna yalnızca bir paket sunan ve birden fazla paket veya eklenti sunan hizmetler dahildir.
Tüm abonelerin erişimine açık içerikleri olmayan sağlayıcıların ortak katman paketi oluşturması gerekmez. Buna örnek olarak, tüm paketlerinde birbirini hariç tutan içerikler sunan servis sağlayıcılar verilebilir.
Sık karşılaşılan katman örnekleri
Aşağıda, ortak katmana ilişkin örnekler verilmiştir.
Katmanlı Abonelik
Katmanlı abonelik modelinde, hizmet sağlayıcının Gold, Silver ve Bronze gibi birden fazla abonelik katmanı vardır. Üst katman aboneliğine sahip kullanıcılar, alt katmanlardaki tüm içeriklere erişebilir. Alt katman aboneliği olan kullanıcılar üst katmandaki içeriklere erişemez. Aşağıdaki resimde paket yapısına örnek verilmiştir.

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
Ek abonelik modelinde, servis sağlayıcı kullanıcıların yararlanma haklarını genişletmesine ve temel aboneliğe kanal eklemesine olanak tanır. Kullanıcılar istedikleri kadar kanal ekleyebilir. Aşağıdaki resimde paket yapısına örnek verilmiştir.

Tüm kullanıcıların erişimine açık olan ve maliyeti olmayan bir kanalınız varsa paketi ortak katman paketiyle birleştirebilirsiniz.
Aşağıdaki kod örneğinde, tüm kullanıcıların bu paketteki tüm içeriklere erişimi olduğundan 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 } ],
İçerikleri çakışan paketler
Paketlerin kesişen içeriklere sahip olduğu bir içerik modelinde, servis sağlayıcı diğer paketlerdeki bazı içerikleri içeren paketler satar. Aşağıdaki resim, paket yapısına örnektir.

Aşağıdaki kod örneğinde sağlayıcı, bazı içeriklerin tüm paketlerde kesiştiği üç paket sunmaktadır. Bu durumda, ortak katmanı temsil eden dördüncü bir paket gerekir. Üç pakette de bulunan tüm içerikleri içermelidir.
"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 } ],
Kesişimi olmayan paketler
İçerik paketlerinin hiçbirinin kesişmediği bir içerik modelinde, servis sağlayıcı diğer paketlerdeki içerikleri içermeyen paketler satar. Aşağıdaki resim, paket yapısına örnektir.

Aşağıdaki örnekte, sağlayıcı tüm paketlerde kesişmeyen içeriklere sahip üç paket sunmaktadır. Ortak katman paketi gerekli değildir.
"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 } ],
Hak talebi uç noktası
Bir kullanıcıyla ilişkili izinleri 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ından yararlanmak için kullanıcının OAuth jetonunu içeren bir istek gönderir. Uç noktanızın, kullanıcıyı bu OAuth jetonuna göre tanımlaması gerekir. Aşağıdaki örneğe bakın:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
Yanıt
Uç noktanızın aşağıdaki özelliklere sahip bir yanıt döndürmesi gerekir:
Mülk | |
---|---|
subscription |
Zorunlu Bu, kök yanıtın içindeki bir alandır. |
subscription.type |
Zorunlu Bu özellik aşağıdaki değerleri alabilir:
|
subscription.expiration_date |
İsteğe bağlı Bu hakkın geçerlilik bitiş tarihi (saat dilimini de içeren ISO 8601 biçiminde). Daha fazla 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 |
Akış kataloğunuza erişim, abonelik türüne göre değişiyorsa zorunludur. Bu mülk |
entitlements.expiration_date |
İsteğe bağlı Bu aboneliğin, saat dilimini de içeren ISO 8601 biçimindeki geçerlilik bitiş tarihi. Daha fazla bilgi için Sona erme tarihleri başlıklı makaleyi inceleyin. |
Geçerlilik bitiş tarihi
Uç noktası yanıtında, geçerlilik bitiş tarihleriyle ilgili iki özellik bulunur: subscription.expiration_date
ve entitlements.expiration_date
. Bunlardan birini veya ikisini birden dahil edemezsiniz. Hangisini kullanacağınız, abonelik modelinize bağlıdır.
Abonelik modeli | |
---|---|
Akış kataloğunuza erişim, tüm aboneler için aynıdır. | entitlements özelliğini belirtmeniz gerekmediğinden subscription.expiration_date değerini belirtin. |
Akış kataloğunuza erişim, kullanıcının aboneliğinin ayrıntılarına göre değişir. |
Abonelik modelinizde zaman içinde süresi dolan birden fazla katman veya eklenti varsa aşağıdakilerden birini yapın:
|
Örnek yanıtlar
Aşağıda, farklı abonelik durumlarının örnek yanıtları verilmiştir:
- Etkin abonelik
- Son kullanma tarihi olan etkin abonelik
- Abonelik yok
- Birden fazla katmana veya eklentiye ait etkin abonelikler
Etkin abonelik
Etkin abonelik
Bir kullanıcının example.com adresinde etkin bir aboneliği varsa bu durumda tüm aboneler, abonelik türlerinden bağımsız olarak yayın kataloğunuzun tamamına erişebilir.
{ "subscription" : { "type": "ActiveSubscription", } }
Son kullanma tarihi olan etkin abonelik
Geçerlilik bitiş tarihi olan etkin abonelik
Bir kullanıcının example.com'da etkin bir aboneliği var ve aboneliğin geçerlilik süresi var. Bu durumda, tüm aboneler abonelik türlerinden bağımsız olarak yayın kataloğunuzun tamamına erişebilir.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
Abonelik yok
Abonelik yok
Kullanıcının example.com aboneliği yoktur.
{ "subscription" : { "type": "InactiveSubscription" } }
Birden fazla katmana veya eklentiye ait etkin abonelikler
Birden fazla katmana veya eklentiye ait etkin abonelikler
Bir 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ırı
Google, kullanıcının hak bilgileri için altı saate kadar yenileme yapar. Google, saniyedeki maksimum sorgu sayısını (QPS) eşitlemek için sorguları uç noktanıza zaman içinde eşit olarak dağıtır. Bu nedenle, uç noktanız için beklenen ortalama istek/saniye sayısını aşağıdaki formülle 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ırma hakkında bilgi edinmek 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şim spesifikasyonu özellikleri
Referans bilgileri için işlem erişim spesifikasyonu özellikleri bölümüne bakın.