Nutzer bevorzugen es, Inhalte anzusehen oder anzuhören, auf die sie bereits zugreifen können, z. B. ihre vorhandenen Aboinhalte. Wenn Google weiß, auf welche Inhalte ein Nutzer in Ihrer App oder Plattform zugreifen kann, kann Google ein besseres Suchergebnis oder eine bessere Antwort erstellen und den Nutzer zu diesen Inhalten weiterleiten.
Anforderungen für den Zugriff auf Inhalte ermitteln
Sie müssen die Zugriffsanforderung für jedes Inhaltspaket in Ihrem Katalog angeben. Dabei solltest du die folgenden Fragen berücksichtigen:
- Müssen sich Nutzer in Ihrer App oder Plattform anmelden, um auf die Inhalte zugreifen zu können?
Benötigen Nutzer ein Abo?
Nur Smartwatch-Aktionen:
- Benötigen Nutzer ein Abo bei einem externen Dienstanbieter?
- Bieten Sie ein gestaffeltes Abo mit mehreren Paketen oder Add-on an?
Nur Smartwatch-Aktionen: Müssen Nutzer die Inhalte ausleihen oder kaufen?
Ändert sich die Zugriffsanforderung im Laufe der Zeit?
Hängt die Zugriffsanforderung vom Gerätestandort ab?
Zugriffseinschränkungen
Es gibt zwei Arten von Zugriffsbeschränkungen:
Paywall-Typ
Du kannst den Zugriff auf Inhalte anhand des Paywall-Typs einschränken. In der folgenden Tabelle sind die verschiedenen Arten der Paywall aufgeführt:
Paywall-Typ | Beispiel | Kategorie |
---|---|---|
Es ist kein Kauf und keine Anmeldung erforderlich. | Knistern | nologinrequired |
Der Nutzer muss angemeldet sein, benötigt aber kein kostenpflichtiges Abo. | Vudu (AVOD) | free |
Der Nutzer muss ein aktives Abo haben. Der Zugriff ist unabhängig von der Abostufe. | Netflix |
|
Der Nutzer muss ein aktives Abo haben. Der Zugriff hängt von der Abostufe ab. | Hulu (Add-ons) |
|
Die Inhalte sind nach dem Kauf für einen begrenzten Zeitraum verfügbar. | Vudu | rental |
Die Inhalte sind nach dem Kauf auf unbestimmte Zeit verfügbar. | Vudu | purchase |
Die Inhalte sind per Kabelabo verfügbar. | HBO GO | externalSubscription |
Paywall-Typ für Smartwatch-Aktionen
Wenn du den Paywall-Typ für „WatchActions“ angeben möchtest, verwende die Property category
in der Spezifikation für den Aktionszugriff:
"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"
}
},
...
}
Paywall-Typ für „Listen Actions“
Um den Paywall-Typ für „Listen Actions“ anzugeben, verwende die
category
Property im Angebotsobjekt:
"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"
}
},
...
}
Region
Sie müssen die Regionen angeben, in denen die Inhalte verfügbar sind. Verwenden Sie eines oder beide der folgenden Attribute:
- Das Attribut
eligibleRegion
eines Objekts Aktionszugriffsspezifikation. Diese Property ist erforderlich. - Das Attribut
ineligibleRegion
eines Objekts Aktionszugriffsspezifikation.
Ein Nutzer kann auf Inhalte zugreifen, wenn sich der Gerätestandort in einer Region befindet, die in eligibleRegion
festgelegt ist, und in keiner Region, die in ineligibleRegion
angegeben ist.
Für die Attribute eligibleRegion
und ineligibleRegion
sind folgende Werte zulässig:
- Eine Liste von
Country
,City
undState
. - Ein
GeoShape
-Objekt. Weitere Informationen zu den Anforderungen finden Sie im AbschnittGeoShape
-Properties. - Eine Liste mit
GeoShape
-Objekten.
Wenn die Inhalte weltweit verfügbar sind, verwenden Sie den folgenden speziellen Wert für eligibleRegion
:
"eligibleRegion": "EARTH",
berechtigte Anwendungsfälle für Regionen
Hier sind Anwendungsfälle aus der eligibleRegion
-Property:
- Beispiel 1:
eligibleRegion
mit einer Liste von Ländern. - Beispiel 2:
eligibleRegion
mit einemGeoShape
-Objekt, das eine Liste mit Postleitzahlen enthält. - Beispiel 3:
eligibleRegion
mit einemGeoShape
-Objekt, das eine Liste der FSA-Codes (Forward Sort Area) enthält. - Beispiel 4:
eligibleRegion
mit einemGeoShape
-Objekt, das eine DMA-ID enthält. - Beispiel 5:
eligibleRegion
mit einer Liste vonGeoShape
-Objekten. Jede enthält eine DMA-ID. - Beispiel 6:
ineligibleRegion
mit blockierten Postleitzahlen.
Beispiel 1
eligibleRegion
mit einer Liste von Ländern:
"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" } ] }
Beispiel 2
eligibleRegion
mit einem GeoShape
-Objekt, das eine Liste mit Postleitzahlen enthält:
"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" ] } }
Beispiel 3
eligibleRegion
mit einem GeoShape
-Objekt, das eine Liste von FSA-Codes (Forward Sort Area) enthält:
"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" ] } }
Beispiel 4
eligibleRegion
durch ein GeoShape
-Objekt, das eine DMA-ID enthält:
"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" } ] } }
Beispiel 5
eligibleRegion
durch eine Liste von GeoShape
-Objekten.
Jede enthält eine DMA-ID:
"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" } } ] }
Beispiel 6
ineligibleRegion
mit blockierten Postleitzahlen:
"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" ] } }
Berechtigungs-ID
Die Berechtigungskennung entitlementId
bezieht sich auf einen String, der den Zugriff auf eine Gruppe von Inhalten in Ihrem Medienkatalog darstellt. So ermitteln Sie, ob ein Nutzer Zugriff auf Ihre Inhalte hat:
- Wir senden einen API-Aufruf an deinen Berechtigungsendpunkt, um die Berechtigungskennungen des Nutzers zu erhalten.
- Die erforderlichen Berechtigungskennungen des Inhalts werden aus deinem Media Actions-Feed abgerufen.
- Wir gleichen die
entitlementId
eines Nutzers mit deridentifier
-Property des Medienaboobjekts in Ihrem Feed ab. Wenn mindestens eine Übereinstimmung mitentitlementId
übereinstimmt, stellen wir fest, dass der Nutzer auf den Inhalt zugreifen kann.
Google empfiehlt die Verwendung der folgenden Syntax für entitlementId
:
<domain name> + colon (:) + <access level to content>
Syntaxbeispiele:
example.com:basic
example.com:premium
example.com:sports
Beispiel für eine Berechtigungs-ID
Der Feed von MediaExampleCompany gibt an, dass Movie XYZ
die example.com:basic
entitlementId
benötigt, wie hier gezeigt:
{ "@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 ... }, ... } }, ... }
Gängige Anwendungsfälle
Gängige Anwendungsfälle für den Zugriff:
- Kostenlos (keine Anmeldung erforderlich): Die Inhalte sind ohne Anmeldung, Abo oder Kauf verfügbar.
- Kostenlos (Anmeldung erforderlich): Für die Inhalte müssen Nutzer angemeldet sein, es ist jedoch kein Abo erforderlich.
- Einstufiges Abo:Für die Inhalte ist ein Abo erforderlich. Alle Abonnenten können unabhängig vom Abopaket auf dieselben Inhalte zugreifen, unabhängig davon, ob sie Filme oder Folgen ansehen.
- Mehrstufiges Abo:Für den Inhalt ist ein Abo erforderlich. Abonnenten können je nach Abostufe auf verschiedene Inhalte wie Filme oder Folgen zugreifen. Beispiel: Silver im Vergleich zu Gold.
- Add-on-Abo: Für den Inhalt ist ein Abo erforderlich. Abonnenten können zusätzlich zu ihrem regulären Abo Premium-Inhalte hinzufügen.
- Einmaliger Kauf:Die Inhalte können erworben werden, danach kann der Nutzer unbegrenzt darauf zugreifen.
- Live-TV: Ein Abo bietet Zugriff auf lokale, nationale und Premium-Kanäle.
- Abo eines Drittanbieters: Für die Inhalte muss sich der Nutzer bei seinem Kabelanbieter anmelden.
Kostenlos (keine Anmeldung erforderlich)
Keine Anmeldung erforderlich
Die Inhalte sind ohne Anmeldung oder Abo verfügbar.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Setzen Sie
category
aufnologinrequired
. - Gib
expectAcceptanceOf
nicht an.
Kostenlos (Anmeldung erforderlich)
Anmeldung erforderlich
Die Inhalte erfordern, dass Nutzer angemeldet sind, aber kein Abo.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Setzen Sie
category
auffree
. - Gib
expectAcceptanceOf
nicht an.
Einstufiges Abo
Bei einem einstufigen Abomodell hat ein Dienstanbieter eine Abostufe. Alle Abonnenten können unabhängig vom Abopaket auf dieselben Inhalte zugreifen, unabhängig davon, ob sie Filme oder Folgen ansehen.
{ "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" } } }
Mehrstufiges Abo
Ein Abomodell besteht aus mehreren Abostufen wie Gold, Silber und Bronze. Nutzer mit dem Abo der obersten Ebene können auf alle Inhalte der niedrigeren Ebene zugreifen. Nutzer mit einem Abo der unteren Ebene können jedoch nicht auf den Inhalt der höheren Ebene zugreifen.
Stellen Sie sich folgendes Szenario vor:
- Jane abonniert die Stufe Gold. Dein Berechtigungsendpunkt gibt die folgenden
entitlementId
-IDs zurück:example.com:bronze
example.com:silver
example.com:gold
- Jan abonniert die Stufe Bronze. Dein Berechtigungsendpunkt gibt das folgende
entitlementId
zurück:example.com:bronze
- In Ihrem Media Actions-Feed werden die folgenden Anforderungen beschrieben:
- Für Film A ist
example.com:bronze
erforderlich. - Für Film B ist
example.com:silver
erforderlich.
- Für Film A ist
In diesem Szenario ermittelt Google die folgenden Zugriffsebenen für Jane und John:
- Sowohl Jane als auch John haben Zugriff auf Film A.
- Jane hat Zugriff auf Film B, John aber nicht.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Add-on-Abo
Bei einem Add-on-Abomodell können Nutzer ihre Berechtigungen erweitern und Kanäle einem Basisabo hinzufügen. Nutzer können beliebig viele Kanäle hinzufügen.
Stellen Sie sich folgendes Szenario vor:
- Jane hat zusätzlich zum Basic-Abo noch PRO und Sportz. Dein Berechtigungsendpunkt gibt die folgenden
entitlementId
-IDs zurück:example.com:basic
example.com:pro
example.com:sportz
- Jan hat nur das Basis-Abo. Dein Berechtigungsendpunkt gibt das folgende
entitlementId
zurück:example.com:basic
- In Ihrem Media Actions-Feed werden die folgenden Anforderungen beschrieben:
- Für Film A ist
example.com:basic
erforderlich. - Für Film B ist
example.com:pro
erforderlich.
- Für Film A ist
In diesem Szenario ermittelt Google die folgenden Zugriffsebenen für Jane und John:
- Sowohl Jane als auch John haben Zugriff auf Film A.
- Jane hat Zugriff auf Film B, John aber nicht.
{ "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 } } } }
Einmaliger Kauf
Kauf
Die Inhalte sind nach dem Kauf auf unbestimmte Zeit verfügbar.
{ "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/" } } } }
- Setzen Sie
category
aufpurchase
. - Gib
expectAcceptanceOf
inactionAccessibilityRequirement
an, um den Preis des Kaufs anzugeben.
Ausleihe
Die Inhalte sind nach dem Kauf für einen begrenzten Zeitraum verfügbar.
{ "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/" } } } }
- Setzen Sie
category
aufrental
. - Gib
expectAcceptanceOf
inactionAccessibilityRequirement
an, um den Leihpreis anzugeben.
Live-TV
In einem Media Actions-Feed kannst du den Zugriff auf einen Live-TV-Kanal oder ein Live-Ereignis anhand der folgenden beiden Nutzerbedingungen einschränken:
-
Gerätestandort des Nutzers
Wenn du den Zugriff auf den TV-Kanal einschränken möchtest, gib den Bereich an, in dem Nutzer Zugriff haben. Diese Bedingung gilt in der Regel für lokale Fernsehsender.
-
Kontostatus des Nutzers
Wenn der Zugriff auf einen TV-Kanal von der Einstellung auf Kontoebene eines Nutzers abhängt, stelle die Einschränkung mithilfe von Berechtigungskennungen dar.
Diese Bedingung gilt in der Regel für folgende Anwendungsfälle:
- Set: Nationale Kanäle sind häufig in Sets enthalten und Nutzer entscheiden, welches Set sie abonnieren möchten.
- Add-on:Bei einigen Premium-Kanälen müssen Nutzer ihrem Abo selektiv zusätzliche Kanäle hinzufügen.
- Regional Sports Network (RSN): RSNs werden normalerweise dem Standort „Zuhause“ eines Nutzers zugeordnet. Nutzer können sich Inhalte der RSN auch dann ansehen, wenn sie ihren Wohnort verlassen.
Drittanbieterabo
Drittanbieter-Abo
Die Inhalte sind für die Abonnenten eines anderen Dienstes verfügbar.
{ "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" } } }
- Fügen Sie
authenticator
hinzu, um anzugeben, dass ein anderer Dienst die Abonnenten authentifiziert. Für HBO GO ist beispielsweise ein Abo beim Kabelanbieter erforderlich.
Gängige Pakete
Allgemeine Inhalte sind für alle Abonnenten verfügbar, unabhängig von ihrem Abopaket. Die allgemeine Stufe gilt für alle Inhalte mit der category
von subscription
. Weitere Informationen zum Attribut category
findest du im Abschnitt Paywall-Typ.
Warum ist ein allgemeines Tier-Paket erforderlich?
Nutzer erhalten in mehreren Google-Produkten TV- und Filmempfehlungen. Dazu gehören die Google Suche, Android TV und Google Assistant. Um die Erwartungen der Nutzer an die Kosten festzulegen, muss Google verstehen, welche Inhalte für alle Abonnenten über die gemeinsame Stufe verfügbar sind. Google muss auch verstehen, welche Inhalte Abonnenten mit bestimmten Abopaketen zur Verfügung stehen.
Google empfiehlt Titel, die auf der gemeinsamen Stufe verfügbar sind, es sei denn, Sie unterstützen die entitlement API. Mithilfe der API kann Google die nicht allgemeingültigen Titel der einzelnen Nutzer verstehen.
Wann sollte ich ein allgemeines Tier-Paket erstellen?
Ein „Common Tier“-Paket ist erforderlich, wenn dein Dienst Inhalte anbietet, die für alle Abonnenten verfügbar sind. Dazu gehören Dienste, die nur ein Paket anbieten, und Dienste mit mehreren Paketen oder Add-ons.
Anbieter ohne Inhalte, die nicht für alle Abonnenten verfügbar sind, müssen kein allgemeines Paket erstellen. Ein Beispiel sind Dienstleister, die sich gegenseitig ausschließende Inhalte in allen ihren Paketen zur Verfügung stellen.
Allgemeine Beispiele
Im Folgenden finden Sie Beispiele für die allgemeine Stufe.
Gestaffeltes Abo
Ein Abomodell hat mehrere Abostufen, z. B. Gold, Silver und Bronze. Nutzer mit dem höheren Abo haben Zugriff auf alle Inhalte in den niedrigeren Stufen. Nutzer mit einem niedrigeren Abo haben keinen Zugriff auf den Inhalt des höheren Levels. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.
Im folgenden Codebeispiel ist das Bronzepaket die übliche Stufe, da alle Nutzer Zugriff auf alle Inhalte in dieser Stufe haben.
"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 } ],
Add-ons
Bei einem Add-on-Abomodell ermöglicht ein Dienstanbieter Nutzern, ihre Berechtigungen zu erweitern und einem einfachen Abo Kanäle hinzuzufügen. Nutzer können beliebig viele Kanäle hinzufügen. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.
Wenn ein Kanal für alle Nutzer verfügbar ist und keine Kosten für den Kanal anfallen, können Sie das Paket mit dem Paket mit der allgemeinen Stufe zusammenführen.
Im folgenden Codebeispiel ist das Basispaket die übliche Stufe, da alle Nutzer Zugriff auf alle Inhalte in diesem Paket haben.
"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 } ],
Pakete mit Inhalten, die sich überschneiden
Bei einem Inhaltsmodell, bei dem Pakete Inhalte überschneiden, verkauft ein Dienstanbieter Pakete mit Inhalten aus anderen Paketen. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.
Im folgenden Codebeispiel bietet der Anbieter drei Pakete an, bei denen sich einige Inhalte über alle Pakete erstrecken. In diesem Fall ist ein viertes Paket erforderlich, das die allgemeine Stufe darstellt. Er muss den gesamten Inhalt aller drei Pakete enthalten.
"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 } ],
Pakete ohne Inhalte, die sich überschneiden
Bei einem Inhaltsmodell, bei dem sich keines der Inhaltspakete überschneidet, verkauft ein Dienstanbieter Pakete, die keinen Inhalt aus anderen Paketen enthalten. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.
Im folgenden Beispiel bietet der Anbieter drei Pakete an, die sich nicht über alle Pakete überschneiden. Es ist kein allgemeines Tier-Paket erforderlich.
"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 } ],
Berechtigungsendpunkt
Verwende die Informationen aus diesem Abschnitt, um einen HTTPS-Endpunkt zu hosten, der die mit einem Nutzer verknüpften Berechtigungen zurückgibt.
Voraussetzung
Prüfen Sie zuerst, ob Ihr Dienst den OAuth 2.0-Vorgang mit Google unterstützt.
Anfragen
Zum Empfangen der Berechtigungen eines Nutzers sendet Google eine Anfrage mit dem OAuth-Token des Nutzers. Der Endpunkt muss den Nutzer anhand dieses OAuth-Tokens identifizieren. Sehen Sie sich folgendes Beispiel an:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
Antwort
Ihr Endpunkt muss eine Antwort mit den folgenden Attributen zurückgeben:
Attribut | |
---|---|
subscription |
Erforderlich Dies ist ein Feld in der Stammantwort. |
subscription.type |
Erforderlich Dieses Attribut kann die folgenden Werte haben:
|
subscription.expiration_date |
Optional Das Ablaufdatum dieser Berechtigung im ISO 8601-Format, das die Zeitzone enthält. Weitere Informationen finden Sie unter Ablaufdaten. |
entitlements |
Optional Diese Stamm-Property enthält die |
entitlements.entitlement |
Erforderlich, wenn der Zugriff auf Ihren Streamingkatalog je nach Art des Abos variiert. Dieses Attribut enthält das |
entitlements.expiration_date |
Optional Das Ablaufdatum des Abos im ISO 8601-Format, das die Zeitzone enthält. Weitere Informationen finden Sie unter Ablaufdaten. |
Ablaufdaten
In einer Endpunktantwort gibt es zwei Attribute, die sich auf das Ablaufdatum beziehen: subscription.expiration_date
und entitlements.expiration_date
. Sie können eine davon oder keines von beiden auswählen, aber nicht beides. Welches Modell du verwendest, hängt von deinem Abomodell ab.
Abomodell | |
---|---|
Der Zugriff auf deinen Streamingkatalog ist für alle Abonnenten gleich. | Da du die Property entitlements nicht angeben musst, gib subscription.expiration_date an. |
Der Zugriff auf Ihren Streamingkatalog hängt von den Abodetails eines Nutzers ab. |
Wenn Ihr Abomodell mehrere Ebenen oder Add-ons hat, die im Laufe der Zeit ablaufen, führen Sie einen der folgenden Schritte aus:
|
Beispielantworten
Hier sind einige Beispielantworten für verschiedene Abostatus:
- Aktives Abo
- Aktives Abo mit Ablaufdatum
- Kein Abo
- Aktive Abos für mehrere Ebenen oder Add-ons
Aktives Abo
Aktives Abo
Ein Nutzer hat ein aktives Abo für example.com. In diesem Fall haben alle Abonnenten unabhängig von ihrem Abo Zugriff auf Ihren gesamten Streamingkatalog.
{ "subscription" : { "type": "ActiveSubscription", } }
Aktives Abo mit Ablaufdatum
Aktives Abo mit Ablaufdatum
Ein Nutzer hat ein aktives Abo für example.com und das Abo hat ein Ablaufdatum. In diesem Fall haben alle Abonnenten unabhängig vom Abotyp Zugriff auf deinen gesamten Streamingkatalog.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
Kein Abo
Kein Abo
Ein Nutzer hat kein Abo für beispiel.de.
{ "subscription" : { "type": "InactiveSubscription" } }
Aktive Abos für mehrere Ebenen oder Add-ons
Aktive Abos für mehrere Ebenen oder Add-ons
Ein Nutzer hat ein example.com:premium
-Abo bis zu einem bestimmten Datum.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
Ratenbegrenzung
Google aktualisiert die Berechtigungsinformationen des Nutzers alle sechs Stunden. Zum Ausgleich der maximalen Anzahl von Abfragen pro Sekunde verteilt Google die Abfragen gleichmäßig auf den Endpunkt. Mit der folgenden Formel können Sie daher den erwarteten durchschnittlichen Wert für Abfragen für Ihren Endpunkt schätzen:
Erwartete durchschnittliche Abfragen pro Sekunde = <Gesamtzahl der Nutzer>/21.600 Sekunden (6 Stunden x 60 Minuten x 60 Sekunden)
Wenn Sie eine große Anzahl von Nutzern unterstützen, kann Google das 6-Stunden-Intervall anpassen. Wenden Sie sich bei Bedarf an Google, um die Konfiguration zu besprechen.
Kontaktaufnahme mit Google
Wenn der Endpunkt bereit ist, wenden Sie sich an Google, um die URL des Endpunkts mitzuteilen.
Eigenschaften der Aktionszugriffsspezifikation
Weitere Informationen finden Sie im Abschnitt Eigenschaften der Aktionszugriffsspezifikation.