Kullanıcılar, halihazırda erişebilecekleri içeriği (ör. mevcut abonelik içerikleri) izlemeyi veya dinlemeyi tercih eder. Google, uygulamanızın veya platformunuzda bir kullanıcının hangi içeriğe erişebileceğini biliyorsa Google, kullanıcıyı bu içeriğe yönlendirmek için daha iyi bir arama sonucu veya yanıt oluşturabilir.
İçerik erişimi gereksinimlerini belirleme
Kataloğunuzdaki her içerik paketi için erişim gereksinimini tanımlamanız gerekir. Bu süreçte aşağıdaki soruları göz önünde bulundurun:
- İçeriğe erişmek için kullanıcıların uygulamanıza veya platformunuza giriş yapması gerekir mi?
Kullanıcıların abone olması gerekir mi?
Yalnızca İzleme İşlemleri:
- Kullanıcıların harici bir servis sağlayıcıdan abonelik almaları gerekir mi?
- Katmanlı, çoklu paket mi yoksa eklenti aboneliği mi sunuyorsunuz?
Yalnızca Action'ları izleme: Kullanıcıların içeriği kiralaması veya satın alması gerekir mi?
Erişim şartı zaman içinde değişir mi?
Erişim koşulu cihazın 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 gösterilmektedir:
Ödeme duvarı türü | Örnek | Kategori |
---|---|---|
Satın almanız veya giriş yapmanız gerekmez. | Çıtırtı | nologinrequired |
Kullanıcının giriş yapmış olması gerekir ancak ücretli abonelik 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üreliğine kullanılabilir. | Vudu | rental |
İçerik, satın alma işleminden sonra süresiz olarak kullanılabilir. | Vudu | purchase |
İçerik kablolu yayın aboneliğiyle kullanılabilir. | HBO Go | externalSubscription |
İzleme İşlemleri için ödeme duvarı türü
İzleme İşlemlerinin içerik duvarı ödeme türünü belirtmek için İşlem erişim spesifikasyonundaki 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 İşlemleri için ödeme duvarı türü
Dinleme İşlemleri için içerik duvarı ödeme türünü belirtmek amacıyla teklif nesnesinde 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ıma sunulduğu coğrafi bölgeleri belirtmeniz gerekir. Aşağıdaki özelliklerden birini veya ikisini birden kullanın:
- İşlem erişim spesifikasyonu nesnesinin
eligibleRegion
özelliği. Bu özellik zorunludur. - İşlem erişim spesifikasyonu nesnesinin
ineligibleRegion
özelliği.
Cihaz konumu, eligibleRegion
içinde belirtilen herhangi bir bölge içindeyse ve ineligibleRegion
bölgesinde belirtilen herhangi bir bölge içinde değilse kullanıcı içeriğe erişebilir.
eligibleRegion
ve ineligibleRegion
özellikleri aşağıdaki değerlere izin verir:
Country
,City
veState
listesi.- Bir
GeoShape
nesnesi. Ayrıntılı gereksinimler içinGeoShape
özellikleri bölümüne bakın. GeoShape
nesnenin listesi.
İçerik dünya genelinde sunuluyorsa eligibleRegion
için aşağıdaki özel değeri kullanın:
"eligibleRegion": "EARTH",
Uygun Bölge kullanım alanları
Aşağıda, eligibleRegion
özelliğinin kullanım örneği verilmiştir:
- 1. Örnek: Ülke listesini içeren
eligibleRegion
. - 2. Örnek: Posta kodlarının listesini içeren bir
GeoShape
nesnesine sahipeligibleRegion
. - 3. Örnek: İleri Sıralama Alanı (FSA) kodlarının listesini içeren bir
GeoShape
nesnesine sahipeligibleRegion
. - 4. Örnek: DMA kimliği içeren bir
GeoShape
nesnesine sahipeligibleRegion
. - 5. Örnek:
GeoShape
nesne listesini içereneligibleRegion
. Her biri TPA kimliği içerir. - 6. Örnek: Engellenen posta kodlarına sahip
ineligibleRegion
.
1. Örnek
Ülke listesini içeren 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. Örnek
Posta kodu listesini içeren GeoShape
nesnesine sahip 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
İleri Sıralama Alanı (FSA) kodlarının listesini içeren bir GeoShape
nesnesine sahip 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
nesnesine sahip 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
nesne içeren eligibleRegion
listesiyle.
Her biri 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 kodu engellenen 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" ] } }
Yararlanma hakkı tanımlayıcısı
Yararlanma hakkı kimliği (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 yararlanma tanımlayıcılarını almak için Yararlanma hakkı uç noktanıza bir API çağrısı yaparız.
- İçeriğin gerekli yararlanma tanımlayıcılarını Medya İşlemleri feed'inizden ararız.
- Bir kullanıcının
entitlementId
özelliğini, 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
Yararlanma hakkı tanımlayıcı örneği
MediaExampleCompany'nin feed'i, Movie XYZ
değerinin aşağıda gösterildiği gibi example.com:basic
entitlementId
gerektirdiğini belirtir:
{ "@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ı
Yaygın erişim kullanım alanları şunlardır:
- Ücretsiz (giriş yapılması gerekmez): İçerik giriş, abonelik veya satın alma olmadan kullanılabilir.
- Ücretsiz (giriş yapılması gerekir): İçerik, kullanıcıların giriş yapmasını gerektirir ancak abonelik gerektirmez.
- Tek katmanlı abonelik: İçerik için abonelik gerekir. Tüm aboneler, abonelik paketlerinden bağımsız olarak film veya bölüm fark etmeksizin aynı içeriğe erişebilirler.
- Çok katmanlı abonelik: İçerik için abonelik gerekir. Aboneler, abonelik katmanlarına göre film veya bölüm gibi farklı içeriklere erişebilirler. Örneğin, Gümüş ve Altın.
- Eklenti aboneliği: İçerik için abonelik gerekir. Aboneler, normal aboneliklerine ek olarak premium içerikler de ekleyebilirler.
- Tek seferlik satın alma: İçerik satın alınabilir. Sonrasında kullanıcı süresiz olarak bu içeriğe erişebilir.
- Canlı TV: Abonelik; yerel, ulusal ve premium kanallara erişimi içerir.
- Üçüncü taraf abonelik: İçerik, kullanıcının kablolu TV sağlayıcısıyla giriş yapmasını gerektirir.
Ücretsiz (giriş yapılması gerekmez)
Giriş yapılması gerekmiyor
İç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
özelliğini dahil etme.
Ücretsiz (giriş yapılması gerekir)
Giriş yapılması gerekli
İçerik, kullanıcıların giriş yapmasını gerektirir ancak abonelik gerektirmez.
{ "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
özelliğini dahil etme.
Tek katmanlı abonelik
Tek katmanlı abonelik modelinde, servis sağlayıcının bir abonelik katmanı vardır. Tüm aboneler, abonelik paketlerinden bağımsız olarak film veya bölüm fark etmeksizin aynı içeriğe erişebilirler.
{ "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 servis sağlayıcıların Altın, Gümüş ve Bronz gibi birden fazla abonelik katmanı vardır. Üst katmana abone olan kullanıcılar, alt katmandaki tüm içeriklere erişebilir. Ancak, alt katman aboneliğine sahip kullanıcılar üst katman içeriğine erişemez.
Aşağıdaki senaryoyu inceleyin:
- Jale, Altın katmana abone olur. Yararlanma hakkı uç noktanız aşağıdaki
entitlementId
tanımlayıcılarını döndürür:example.com:bronze
example.com:silver
example.com:gold
- Can Bronz katmanına abone olur. Yararlanma hakkı uç noktanız aşağıdaki
entitlementId
değerini döndürür:example.com:bronze
- Medya İşlemleri feed'iniz aşağıdaki gereksinimleri açıklar:
- A Filmi için
example.com:bronze
gerekiyor. - B Filmi için
example.com:silver
gerekiyor.
- A Filmi için
Bu senaryoda Google, Jale ve Can için aşağıdaki erişim düzeylerini belirler:
- Jale ve Can A Filmine erişebilir.
- Jale'nin B Filmi'ne erişimi var, ancak Cem'in erişimi yok.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Eklenti aboneliği
Eklenti abonelik modelinde servis sağlayıcılar, kullanıcıların yararlanma haklarını genişletip temel aboneliğe kanal eklemelerine olanak tanır. Kullanıcılar istedikleri sayıda kanal ekleyebilir.
Aşağıdaki senaryoyu inceleyin:
- Jale'nin Temel aboneliğinin yanı sıra PRO ve Sportz da vardır. Yararlanma hakkı 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ğe sahiptir. Yararlanma hakkı uç noktanız aşağıdaki
entitlementId
değerini döndürür:example.com:basic
- Medya İşlemleri feed'iniz aşağıdaki gereksinimleri açıklar:
- A Filmi için
example.com:basic
gerekiyor. - B Filmi için
example.com:pro
gerekiyor.
- A Filmi için
Bu senaryoda Google, Jale ve Can için aşağıdaki erişim düzeylerini belirler:
- Jale ve Can A Filmine erişebilir.
- Jale'nin B Filmi'ne erişimi var, ancak Cem'in erişimi yok.
{ "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 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ı göstermek için
actionAccessibilityRequirement
özelliğineexpectAcceptanceOf
özelliğini 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ğerinirental
olarak ayarlayın.- Kiralama fiyatını belirtmek için
actionAccessibilityRequirement
özelliğiniexpectAcceptanceOf
özelliğine ekleyin.
Canlı TV
Medya İşlemleri feed'inde aşağıdaki iki kullanıcı koşuluna bağlı olarak Canlı TV kanalına veya etkinliğine erişimi kısıtlayabilirsiniz:
-
Kullanıcının cihaz 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 TV kanalları için geçerlidir.
-
Kullanıcının hesap durumu
Bir TV kanalına erişim kullanıcının hesap düzeyi ayarına bağlıysa kısıtlamayı göstermek için yararlanma tanımlayıcılarını kullanın.
Bu durum genellikle aşağıdaki kullanım alanları için geçerlidir:
- Paket: Ulusal kanallar genellikle paketlere dahil edilir ve kullanıcılar abone olmak istedikleri grubu seçer.
- Eklenti: Bazı premium kanallar, kullanıcıların aboneliklerine seçerek ekstra kanallar 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ışında seyahat etseler bile RSN'de içerik izleyebilirler.
Üçüncü taraf aboneliği
Üçüncü taraf abonelik
İçerik, farklı bir hizmetten abonelere sunulur.
{ "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" } } }
- Farklı bir hizmetin abonelerin kimliğini doğrulayacağını belirtmek için
authenticator
ekleyin. Örneğin, HBO GO, kablolu yayın sağlayıcısından abonelik gerektirir.
Genel katman paketleri
Ortak katmanlı içerikler, abonelik paketlerinden bağımsız olarak tüm abonelere sunulur. Ortak katman, category
öğesi 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ünü inceleyin.
Ortak katman paketi neden gereklidir?
Kullanıcılara Google ve Android TV ve Google Asistan'ı içeren TV ve film önerileri sunan birden çok Google ürünü vardır. Maliyetle ilgili kullanıcı beklentilerini belirlemek için Google'ın, ortak katmanı kullanarak tüm abonelerin hangi içeriği görebileceğini anlaması gerekir. Google, belirli abonelik paketlerine sahip abonelere hangi içeriklerin sunulacağını da anlamalıdır.
yararlanma API'sini desteklemediğiniz sürece Google, ortak katmanda bulunan başlıkları önerir. API, Google'ın her bir kullanıcının erişebileceği, yaygın olmayan katman başlıklarını anlamasını sağlar.
Ortak katman paketini ne zaman oluşturmalıyım?
Hizmetiniz tüm abonelere sunulan içerikler sunduğunda genel bir katman paketi gerekir. Tek bir paket sunan hizmetler ile birden fazla paket veya eklenti sunan hizmetler bu kapsama girer.
Tüm abonelere sunulan içeriğe sahip olmayan sağlayıcıların ortak bir katman paketi oluşturmasına gerek yoktur. Örneğin, tüm paketlerinde karşılıklı olarak karşılıklı içerik sağlayan servis sağlayıcılar vardır.
Genel katman örnekleri
Aşağıda ortak katmana örnekler verilmiştir.
Katlı Abonelik
Katmanlı abonelik modelinde, servis sağlayıcı Altın, Gümüş ve Bronz katman gibi birden fazla abonelik katmanına sahiptir. Üst katmana abone olan kullanıcılar, alt katmanlardaki tüm içeriklere erişebilir. Alt katmana abone olan kullanıcılar üst katmandaki içeriğe erişemez. Aşağıdaki resimde paket yapısına bir örnek verilmiştir.
Aşağıdaki kod örneğinde, bronz kullanıcılar tüm katmandaki tüm içeriklere erişebildiğinden 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 abonelik modelinde, servis sağlayıcı kullanıcıların yararlanma haklarını genişletip temel aboneliğe abone olmalarına olanak tanır. Kullanıcılar istedikleri sayıda kanal ekleyebilir. Aşağıdaki yapı, paket yapısının bir örneğidir.
Tüm kullanıcıların kullanabileceği bir kanalınız varsa ve kanal için ücret ödemeniz gerekmiyorsa 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ğinden temel paket yaygın 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 } ],
Kesişen içeriğe sahip paketler
Paketlerde kesişen içeriklerin yer aldığı içerik modellerinde servis sağlayıcılar, diğer paketlerdeki bazı içerikleri barındıran paketler satarlar. Aşağıdaki görsel, 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. Üç paketin tamamında mevcut olan 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şen içeriğe sahip olmayan paketler
Tüm içerik paketlerinin kesişmediği içerik modellerinde bir servis sağlayıcı, diğer paketlerdeki hiçbir içeriği içermeyen paketler satar. Aşağıdaki görsel, paket yapısına örnektir.
Aşağıdaki örnekte sağlayıcı, hiçbir paketle kesişmeyen içerik içermeyen üç paket sunmaktadır. 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 } ],
Yararlanma hakkı uç noktası
Bu bölümdeki bilgilerden yararlanarak, kullanıcıyla ilişkili yararlanma haklarını döndüren bir HTTPS uç noktası barındırabilirsiniz.
Ön koşul
Başlamadan önce hizmetinizin Google ile OAuth 2.0 akışını desteklediğini doğrulayın.
İstek
Google, bir kullanıcının yararlanma haklarını almak 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:
Özellik | |
---|---|
subscription |
Zorunlu Bu, kök yanıtın içindeki bir alandır. |
subscription.type |
Zorunlu Bu özellik aşağıdaki değerlere sahip olabilir:
|
subscription.expiration_date |
İsteğe bağlı Bu yararlanma hakkının, saat dilimini içeren ISO 8601 biçiminde belirtilen son kullanma tarihi. Daha ayrıntılı bilgi için Son kullanma tarihleri bölümüne bakın. |
entitlements |
İsteğe bağlı Bu kök mülk, 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 tesis, |
entitlements.expiration_date |
İsteğe bağlı Saat dilimini içeren ISO 8601 biçiminde bu aboneliğin son kullanma tarihi. Daha ayrıntılı bilgi için Son kullanma tarihleri bölümüne bakın. |
Geçerlilik bitiş tarihi
Uç nokta yanıtında son kullanma tarihleriyle ilgilenen iki özellik vardır: subscription.expiration_date
ve entitlements.expiration_date
. Bu yöntemlerden birini veya ikisini birden ekleyebilirsiniz ama 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 özelliğini belirtin. |
Akış kataloğunuza erişim, kullanıcı aboneliğinin ayrıntılarına göre değişir. |
Abonelik modelinizin zaman içinde süresi dolan birden fazla katmanı veya eklentisi varsa aşağıdakilerden birini yapın:
|
Örnek yanıtlar
Aşağıda farklı abonelik durumlarıyla ilgili örnek yanıtlar verilmiştir:
- Etkin abonelik
- Geçerlilik bitiş tarihi olan etkin abonelik
- Abonelik yok
- Birden fazla katman veya eklenti için etkin abonelikler
Etkin abonelik
Etkin abonelik
Kullanıcının etkin bir example.com aboneliği vardır. Bu durumda, tüm aboneler abonelik türlerinden bağımsız olarak, akış kataloğunuzun tamamına erişebilir.
{ "subscription" : { "type": "ActiveSubscription", } }
Geçerlilik bitiş tarihi olan etkin abonelik
Son kullanma tarihi olan etkin abonelik
Kullanıcının etkin bir example.com aboneliğinin olması ve aboneliğin sona erme tarihinin olması. Bu durumda tüm aboneler, abonelik türlerinden bağımsız olarak tüm akış 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 yoktur.
{ "subscription" : { "type": "InactiveSubscription" } }
Birden fazla katman veya eklenti için etkin abonelikler
Birden çok 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 yararlanma hakkı bilgilerini altı saatte bir yeniler. Saniyedeki maksimum sorgu sayısını (QPS) pürüzsüzleştirmek için Google, sorguları zamanla uç noktanıza eşit olarak dağıtır. Bu şekilde, aşağıdaki formülü kullanarak uç noktanız için beklenen ortalama QPS değerini 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 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şim spesifikasyonu özellikleri
Referans bilgileri için işlem erişim spesifikasyonu özellikleri bölümüne bakın.