Nutzer bevorzugen es, sich Inhalte anzusehen oder anzuhören, auf die sie bereits zugreifen können, z. B. ihre bestehenden Aboinhalte. Wenn Google weiß, welche Inhalte ein Nutzer Zugriff auf Ihre App oder Plattform gewährt, kann Google ein besseres Suchergebnis oder eine Reaktion darauf, Nutzer zu diesen Inhalten zu leiten.
![](https://developers-dot-devsite-v2-prod.appspot.com/static/actions/media/images/image-entitlements-4.png?authuser=5&hl=de)
Anforderungen für den Zugriff auf Inhalte ermitteln
Sie müssen die Zugriffsanforderung für jedes Inhaltspaket in Ihrem Katalog. Berücksichtigen Sie dabei die folgenden Fragen:
- Müssen sich Nutzer in Ihrer App oder auf Ihrer 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 mehrstufiges Abo, ein Abo mit mehreren Paketen oder ein Add-on-Abo 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?
Arten von Zugriffsbeschrä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 werden die verschiedenen Paywall-Typen erläutert:
Paywall-Typ | Beispiel | Kategorie |
---|---|---|
Es ist kein Kauf und keine Anmeldung erforderlich. | Crackle | 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 Abo-Stufe. | Netflix |
|
Der Nutzer muss ein aktives Abo haben. Der Zugriff ist abhängig vom Abo-Stufe. | Hulu (Add-ons) |
|
Die Inhalte sind nach dem kaufen. | Vudu | rental |
Die Inhalte sind nach dem kaufen. | Vudu | purchase |
Die Inhalte sind per Kabel-TV erhältlich. | HBO GO | externalSubscription |
Paywall-Typ für Wiedergabeaktionen
Um den Paywall-Typ der Inhalte für Wiedergabeaktionen anzugeben, verwende die
category
im
Aktionszugriffsspezifikation:
"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 Anhör-Aktionen
Um den Paywall-Typ der Inhalte für Anhör-Aktionen festzulegen, verwende die
category
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 geografischen Regionen angeben, in denen die Inhalte verfügbar sind. Verwenden Sie eine oder der beiden folgenden Attribute:
- Die Eigenschaft
eligibleRegion
eines Aktionszugriffsspezifikation -Objekt enthält. Diese Eigenschaft ist erforderlich. - Die Eigenschaft
ineligibleRegion
eines Aktionszugriffsspezifikation -Objekt enthält.
Ein Nutzer kann auf Inhalte zugreifen, wenn sich der Gerätestandort in einer Region befindet,
angegeben in eligibleRegion
und befindet sich nicht in einer Region, die in
ineligibleRegion
.
Mit den Attributen eligibleRegion
und ineligibleRegion
ist Folgendes möglich:
Werte:
- Eine Liste mit
Country
,City
undState
- Ein
GeoShape
-Objekt. Weitere Informationen finden Sie in derGeoShape
-Properties . - Eine Liste mit
GeoShape
-Objekten.
Wenn der Inhalt weltweit verfügbar ist, verwenden Sie den folgenden speziellen Wert für
eligibleRegion
:
"eligibleRegion": "EARTH",
zulässige Anwendungsfälle
Hier einige Anwendungsbeispiele für das Attribut eligibleRegion
:
- 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 enthält eine Liste mit FSA-Codes (Forward Sortation Area). - Beispiel 4:
eligibleRegion
mit einemGeoShape
-Objekt, das enthält eine DMA-ID. - Beispiel 5:
eligibleRegion
mit einer Liste vonGeoShape
-Objekten. Jede enthält eine DMA-ID. - Beispiel 6:
ineligibleRegion
mit ausgeblendeten Postleitzahlen.
Beispiel 1
eligibleRegion
durch eine Liste der Länder:
"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
durch ein GeoShape
-Objekt, das
enthält eine Liste mit 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": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
Beispiel 3
eligibleRegion
durch ein GeoShape
-Objekt, das
enthält eine Liste der FSA-Codes (Forward Sortation Area):
"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
enthält eine DMA-ID:
"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 Berechtigungs-ID entitlementId
verweist auf einen String, der für
Zugriff auf eine Gruppe von Inhalten in Ihrem Medienkatalog. Um zu ermitteln, ob ein Nutzer
auf Ihre Inhalte zugreifen kann, unternimmt Google die folgenden Schritte:
- Wir starten einen API-Aufruf an Ihre Berechtigungsendpunkt zum Empfangen der Berechtigungskennungen.
- Wir ermitteln die erforderlichen Berechtigungs-IDs der Inhalte in Ihren Medien Aktionsfeed.
- Wir gleichen die
entitlementId
eines Nutzers mit demidentifier
der Eigenschaft des Medienaboobjekt in Ihrem Feed. Wenn mindestens 1entitlementId
stimmt, wird festgelegt, dass der Nutzer auf die Inhalte.
![](https://developers-dot-devsite-v2-prod.appspot.com/static/actions/media/images/image-entitlements-5.png?authuser=5&hl=de)
Google empfiehlt die folgende 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
, wie 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 ... }, ... } }, ... }
Häufige Anwendungsfälle für den Zugriff
Im Folgenden sind häufige Anwendungsfälle für den Zugriff aufgeführt:
- Kostenlos (keine Anmeldung erforderlich): Das Inhalte sind ohne Anmeldung, Abo oder Kauf verfügbar.
- Kostenlos (Anmeldung erforderlich): Nutzer müssen angemeldet sein, es ist jedoch kein Abo erforderlich.
- Einstufiges Abo: Für die Inhalte ist ein Abo erforderlich. Alle Abonnenten können auf dasselbe egal ob Filme oder Folgen, unabhängig von Abo Paket.
- Mehrstufiges Abo: Der Inhalte erfordern ein Abo. Abonnenten können auf verschiedene Inhalte zugreifen, egal ob Filme oder Folgen, je nach Abostufe. Beispiel: Silber im Vergleich zu Gold
- Add-on-Abo:Der Inhalt erfordert ein Abo. Abonnenten können Premium-Inhalte auf ihren reguläres Abo.
- Einmaliger Kauf:Die Inhalte können gekauft werden können. Danach kann der Nutzer unbegrenzt darauf zugreifen.
- Live-TV:Mit einem Abo haben Sie Zugriff auf lokale, nationale und Premiumkanäle.
- Drittanbieterabo: Dazu 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
. - Geben Sie nicht
expectAcceptanceOf
an.
Kostenlos (Anmeldung erforderlich)
Anmeldung erforderlich
Für den Inhalt müssen Nutzer angemeldet sein, es ist jedoch 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
. - Geben Sie nicht
expectAcceptanceOf
an.
Einstufiges Abo
Bei einem einstufigen Abomodell hat ein Dienstanbieter eine Abo-Stufe. Alle Abonnenten können auf dieselben Inhalte zugreifen, Filme oder Folgen, unabhängig von ihrem Abopaket.
{ "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
Bei einem gestaffelten Abomodell hat ein Dienstanbieter mehrere Abostufen wie Gold, Silber und Bronze Nutzer mit dem Abo der höheren Stufe können auf alle die Inhalte niedrigerer Stufe. Nutzer der niedrigeren Stufe kann das Abo nicht auf Inhalte der höheren Stufe zugreifen.
![](https://developers-dot-devsite-v2-prod.appspot.com/static/actions/media/images/image-entitlements-2.png?authuser=5&hl=de)
Stellen Sie sich folgendes Szenario vor:
- Jane abonniert die Stufe Gold. Meine Berechtigungen
Der Endpunkt gibt die folgenden
entitlementId
-IDs zurück:example.com:bronze
example.com:silver
example.com:gold
- Jonas hat die Stufe Bronze abonniert. Meine Berechtigungen
Endpunkt gibt die folgende
entitlementId
zurück:example.com:bronze
- Für Ihren Media Actions-Feed gelten die folgenden Anforderungen:
<ph type="x-smartling-placeholder">
- </ph>
- 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 bestimmt Google die folgenden Zugriffsebenen für Erika. und John:
- Sowohl Jane als auch John haben Zugriff auf Film A.
- Jane hat Zugriff auf Film B, Max jedoch nicht.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Add-on-Abo
Beim Add-on-Abomodell ermöglicht ein Dienstanbieter Nutzern, ihre Berechtigungen erweitern und Kanäle zu einem Basisabo hinzufügen. Nutzer*innen beliebig viele Kanäle hinzufügen.
<ph type="x-smartling-placeholder">![](https://developers-dot-devsite-v2-prod.appspot.com/static/actions/media/images/image-entitlements-3.png?authuser=5&hl=de)
Stellen Sie sich folgendes Szenario vor:
- Jane hat zusätzlich PRO und Sportz.
Basic-Abo. Dein Berechtigungsendpunkt gibt Folgendes zurück:
folgende
entitlementId
-Kennungen:example.com:basic
example.com:pro
example.com:sportz
- Jonas hat nur das Basic-Abo. Meine Berechtigungen
Endpunkt gibt die folgende
entitlementId
zurück:example.com:basic
- Für Ihren Media Actions-Feed gelten die folgenden Anforderungen:
<ph type="x-smartling-placeholder">
- </ph>
- 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 bestimmt Google die folgenden Zugriffsebenen für Erika. und John:
- Sowohl Jane als auch John haben Zugriff auf Film A.
- Jane hat Zugriff auf Film B, Max jedoch 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 kaufen.
{ "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
. expectAcceptanceOf
einschließen inactionAccessibilityRequirement
, um den Preis des kaufen.
Verleih
Die Inhalte sind nach dem kaufen.
{ "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
. expectAcceptanceOf
einschließen inactionAccessibilityRequirement
, um den Preis des Verleih.
Live-TV
In einem Media Actions-Feed kannst du den Zugriff auf ein Live-TV einschränken channel oder Ereignis auf Basis des folgenden zwei Nutzerbedingungen:
-
Standort des Nutzergeräts
Um den Zugriff auf den TV-Kanal einzuschränken, geben Sie das Gebiet an, in dem die Nutzer darauf zugreifen können. Diese Bedingung gilt normalerweise für lokale Sender TV-Kanälen.
-
Kontostatus des Nutzers
Wenn der Zugriff auf einen TV-Kanal von der Einstellung auf Kontoebene des Nutzers abhängt, nutzen Berechtigungskennungen für stellen die Einschränkung dar.
Diese Bedingung gilt in der Regel für die folgenden Anwendungsfälle:
- Set:Nationale Kanäle sind oft enthalten in und die Nutzer wählen aus, welches Bundle sie abonnieren möchten.
- Add-on:Bei einigen Premiumkanälen müssen Nutzer selektiv zusätzliche Kanäle zu ihrem Abo hinzufügen.
- Regional Sports Network (RSN): RSNs werden in der Regel die mit dem Zuhause des Nutzers Standort. Nutzer können sich Inhalte ansehen auch wenn sie nicht zu Hause sind, Standort.
Drittanbieterabo
Drittanbieterabo
Die Inhalte stehen den Abonnenten eines anderen Dienstes zur Verfügung.
{ "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 authentifiziert die Abonnenten. HBO GO erfordert beispielsweise eine beim Kabelanbieter abonnieren.
Gängige Stufenpakete
Inhalte der allgemeinen Stufe sind für alle Abonnenten verfügbar, unabhängig von ihren
Abo-Paket. Die gemeinsame Stufe gilt für alle Inhalte mit dem category
von subscription
. Weitere Informationen zum Attribut category
findest du in der
Bereich Paywall-Typ.
Warum ist ein Paket mit einer allgemeinen Stufe erforderlich?
Mehrere Google-Produkte bieten TV- und Filmempfehlungen an Nutzer dies umfasst die Google Suche, Android TV und Google Assistant. Nutzer festlegen Erwartungen an die Kosten haben, muss Google verstehen, welche Inhalte für alle -Abonnenten über die gemeinsame Stufe. Google muss auch verstehen, Inhalte sind für Abonnenten mit bestimmten Abopaketen verfügbar.
Google empfiehlt Titel, die auf der allgemeinen Stufe verfügbar sind, es sei denn, Sie unterstützen die entitlement API zugreifen. Das API ermöglicht es Google, die nicht-gemeinsamen Titel, die jeweils auf die der Nutzer zugreifen kann.
Wann sollte ich ein Paket mit einer gemeinsamen Stufe erstellen?
Ein allgemeines Stufenpaket ist erforderlich, wenn Ihr Dienst Inhalte anbietet, die für alle Abonnenten verfügbar. Dazu gehören auch Dienste, bei denen nur ein Paket angeboten wird. und Dienste, die mehrere Pakete oder Add-ons anbieten.
Anbieter, bei denen keine Inhalte für alle Abonnenten verfügbar sind, müssen keine Inhalte erstellen, ein gängiges Paket. Ein Beispiel hierfür sind Dienstleister, in all ihren Paketen ansehen.
Beispiele für gängige Stufen
Im Folgenden finden Sie Beispiele für die allgemeine Stufe.
Gestaffeltes Abo
Bei einem gestaffelten Abomodell hat ein Dienstanbieter mehrere Abos, Gold, Silber und Bronze. Nutzer mit der Abonnenten der oberen Preisstufe Zugriff auf alle Inhalte in den niedrigeren Stufen haben. Nutzer*innen der niedrigeren Abo-Stufe keinen Zugriff auf die Inhalte der oberen Stufe. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.
![Die Stufe „Gold“ umfasst alle Inhalte der Stufe „Silber“.
enthält alle Bronze-Stufen.](https://developers-dot-devsite-v2-prod.appspot.com/static/actions/media/images/tieredsub.png?authuser=5&hl=de)
Im folgenden Codebeispiel ist das Bronze-Paket die allgemeine Stufe, da alle -Nutzer haben Zugriff auf alle Inhalte in dieser Stufe.
"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
Beim Add-on-Abomodell ermöglicht ein Dienstanbieter den Nutzern, und füge Kanäle zu einem Basisabo hinzu. Nutzer können hinzufügen als wie viele Kanäle erwünscht. In der folgenden Abbildung sehen Sie ein Beispiel für das Paket. Struktur.
![Jeder Nutzer beginnt mit dem einfachen Kanal und kann auf Wunsch
der Kanäle PRO, Sportz und Moviemax.](https://developers-dot-devsite-v2-prod.appspot.com/static/actions/media/images/addonssub.png?authuser=5&hl=de)
Wenn ein Kanal allen Nutzern zur Verfügung steht und für den Channel channel, können Sie das Paket mit dem Paket der allgemeinen Stufe zusammenführen.
Im folgenden Codebeispiel ist das Basispaket die allgemeine Stufe, da alle -Nutzer haben Zugriff auf alle Inhalte in diesem Paket.
"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
In einem Inhaltsmodell, in dem Pakete Inhalte haben, die sich überschneiden, wird ein Dienst Anbieter verkauft Pakete, die Inhalte aus anderen Paketen enthalten. Die Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.
![Ein Venn-Diagramm, in dem die Überschneidung zwischen den Paketen 1, 2 und 3
mit der Bezeichnung „Common Tier“.](https://developers-dot-devsite-v2-prod.appspot.com/static/actions/media/images/intersect.png?authuser=5&hl=de)
Im folgenden Codebeispiel bietet der Anbieter drei Pakete an, in denen einige Inhalte in allen Paketen. In diesem Fall wird ein viertes Paket die die gemeinsame Stufe darstellt, ist erforderlich. Alle Inhalte müssen enthalten sein. in allen drei Paketen verfügbar.
"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 sich überschneidende Inhalte
In einem Inhaltsmodell, bei dem sich alle Inhaltspakete nicht überschneiden, Anbieter verkauft Pakete, die keine Inhalte aus anderen Paketen enthalten. Die Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.
![Die Pakete 1, 2 und 3 sind völlig unabhängig voneinander.](https://developers-dot-devsite-v2-prod.appspot.com/static/actions/media/images/nointersect.png?authuser=5&hl=de)
Im folgenden Beispiel bietet der Anbieter drei Pakete ohne Inhalt an. die sich mit allen Paketen überschneiden. Es ist kein allgemeines Stufenpaket 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
Verwenden Sie die Informationen aus diesem Abschnitt, um einen HTTPS-Endpunkt zu hosten, der den Berechtigungen, die einem Nutzer zugeordnet sind.
Vorbereitung
Prüfen Sie zuerst, ob Ihr Dienst die OAuth 2.0-Vorgang mit Google senden.
Anfrage
Um die Berechtigungen eines Nutzers zu erhalten, sendet Google eine Anfrage mit den OAuth-Token des Nutzers. Der Endpunkt muss den Nutzer anhand dieses OAuth identifizieren. Token. Sehen Sie sich folgendes Beispiel an:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
Antwort
Der Endpunkt muss eine Antwort mit den folgenden Attributen zurückgeben:
Attribut | |
---|---|
subscription |
Erforderlich Dies ist ein Feld innerhalb der Stammantwort. |
subscription.type |
Erforderlich Diese Eigenschaft kann die folgenden Werte haben:
|
subscription.expiration_date |
Optional Das Ablaufdatum dieser Berechtigung in ISO 8601-Format einschließlich der Zeitzone. Weitere Informationen finden Sie unter Ablaufdaten. |
entitlements |
Optional Dies ist eine Stamm-Property mit den |
entitlements.entitlement |
Erforderlich, wenn der Zugriff auf Ihren Streamingkatalog variiert je nach Art des Abos. Diese Eigenschaft enthält die |
entitlements.expiration_date |
Optional Das Ablaufdatum dieses Abos in ISO 8601-Format einschließlich der Zeitzone. Weitere Informationen finden Sie unter Ablaufdaten. |
Ablaufdaten
Es gibt zwei Attribute in einer Endpunktantwort, die sich auf den Ablauf beziehen
Daten: subscription.expiration_date
und entitlements.expiration_date
. Ich
entweder eines davon oder keines von beiden enthalten. Welche Methode Sie verwenden, hängt davon ab,
Ihr Abomodell.
Abomodell | |
---|---|
Der Zugriff auf deinen Streamingkatalog ist für alle Abonnenten gleich. | Weil du das entitlements -Objekt nicht angeben musst
auf subscription.expiration_date . |
Der Zugriff auf Ihren Streamingkatalog hängt von den Details eines das Abo des Nutzers. |
Wenn Ihr Abomodell mehrere Stufen oder Add-ons hat, im Laufe der Zeit ablaufen lassen, führen Sie einen der folgenden Schritte aus:
|
Beispielantworten
Hier siehst du Beispielantworten für verschiedene Abostatus:
- Aktives Abo
- Aktives Abo mit Ablaufdatum
- Kein Abo
- Aktive Abos für mehrere Stufen oder Add-ons
Aktives Abo
Aktives Abo
Ein Nutzer hat ein aktives Abo für example.com. In dieser haben alle Abonnenten Zugriff auf deinen gesamten Streaming-Katalog. unabhängig von ihrem Abotyp.
{ "subscription" : { "type": "ActiveSubscription", } }
Aktives Abo mit Ablaufdatum
Aktives Abo mit Ablaufdatum
Ein Nutzer hat ein aktives Abo für example.com und die Abo hat ein Ablaufdatum. In diesem Fall haben alle Abonnenten Zugriff auf Ihren gesamten Streamingkatalog unabhängig von deren Abo Typ.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
Kein Abo
Kein Abo
Ein Nutzer hat kein Abo für example.com.
{ "subscription" : { "type": "InactiveSubscription" } }
Aktive Abos für mehrere Stufen oder Add-ons
Aktive Abos für mehrere Stufen oder Add-ons
Ein Nutzer hat bis zu einem bestimmten Datum ein Abo von example.com:premium
.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
Ratenbegrenzung
Google aktualisiert die Berechtigungsinformationen eines Nutzers maximal alle sechs Stunden. Bis die maximale Anzahl von Abfragen pro Sekunde (Queries per Second, QPS) ausgleichen, über einen längeren Zeitraum zu Ihrem Endpunkt. Daher können Sie den erwarteten Durchschnitt Abfragen pro Sekunde für Ihren Endpunkt anhand der folgenden Formel:
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.
Google kontaktieren
Wenn der Endpunkt bereit ist, wenden Sie sich an Google und teilen Sie ihm die URL des Endpunkts mit.
Attribute der Aktionszugriffsspezifikation
Weitere Informationen finden Sie in der Der Abschnitt Eigenschaften der Aktionszugriffsspezifikation als Referenz Informationen.