Les utilisateurs préfèrent regarder ou écouter du contenu auquel ils ont déjà accès, comme leurs abonnements existants. Si Google sait quel contenu un utilisateur peut à votre application ou à votre plate-forme, Google peut alors créer un meilleur résultat de recherche ou une réponse pour diriger l'utilisateur vers ce contenu.
Identifier les conditions d'accès au contenu
Vous devez définir l'accès requis pour chaque package de contenu dans votre catalogue. Lorsque vous le faites, posez-vous les questions suivantes:
- Les utilisateurs doivent-ils se connecter à votre application ou à votre plate-forme pour accéder au contenu ?
Les utilisateurs ont-ils besoin d'un abonnement ?
Actions de visionnage uniquement:
- Les utilisateurs ont-ils besoin d'un abonnement auprès d'un fournisseur de services externe ?
- Proposez-vous un abonnement avec plusieurs niveaux, plusieurs forfaits ou des modules complémentaires ?
Actions de visionnage uniquement:les utilisateurs doivent-ils louer ou acheter le contenu ?
Les conditions d'accès changent-elles au fil du temps ?
Les conditions d'accès dépendent-elles de l'emplacement de l'appareil ?
Types de restrictions d'accès
Il existe deux types de restrictions d'accès:
Type de paywall
Vous pouvez limiter l'accès au contenu en fonction du type de paywall. Le tableau suivant présente les différents types de paywalls:
Type de paywall | Exemple | Catégorie |
---|---|---|
Aucun achat ou connexion n'est requis. | Crackle | nologinrequired |
L'utilisateur doit être connecté, mais il n'a pas besoin d'un abonnement payant. | Vudu (AVOD) | free |
L'utilisateur doit disposer d'un abonnement actif. L'accès est indépendant le niveau d'abonnement. | Netflix |
|
L'utilisateur doit disposer d'un abonnement actif. L'accès dépend de niveau d'abonnement. | Hulu (modules complémentaires) |
|
Le contenu est disponible pendant une durée limitée après le à l'achat. | Vudu | rental |
Le contenu est disponible pour une durée indéterminée après la à l'achat. | Vudu | purchase |
Le contenu est disponible sur abonnement au câble. | HBO Go | externalSubscription |
Type de paywall pour les actions de visionnage
Pour spécifier le type de paywall de contenu pour les actions de visionnage, utilisez la méthode
category
du composant
Spécification de l'accès aux actions:
"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"
}
},
...
}
Type de paywall pour les actions d'écoute
Pour spécifier le type de paywall de contenu pour les actions d'écoute, utilisez les
category
du composant
objet de l'offre:
"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"
}
},
...
}
Zone géographique
Vous devez spécifier les zones géographiques dans lesquelles le contenu est disponible. Utilisez un ou les deux propriétés suivantes:
- La propriété
eligibleRegion
d'un Spécification de l'accès aux actions . Cette propriété est obligatoire. - La propriété
ineligibleRegion
d'un Spécification de l'accès aux actions .
Un utilisateur peut accéder au contenu si la position de son appareil se trouve dans une région
spécifiée dans eligibleRegion
et qui ne se trouve dans aucune région spécifiée dans
ineligibleRegion
Les propriétés eligibleRegion
et ineligibleRegion
permettent ce qui suit :
:
- Une liste de
Country
,City
State
- Un objet
GeoShape
. Consultez leGeoShape
propriétés pour connaître les exigences détaillées. - Liste d'objets
GeoShape
.
Si le contenu est disponible dans le monde entier, utilisez la valeur spéciale suivante pour
eligibleRegion
:
"eligibleRegion": "EARTH",
cas d'utilisation éligiblesRegion
Voici des exemples de cas d'utilisation de la propriété eligibleRegion
:
- Exemple 1:
eligibleRegion
avec une liste de pays. - Exemple 2:
eligibleRegion
avec un objetGeoShape
qui contient une liste de codes postaux. - Exemple 3:
eligibleRegion
avec un objetGeoShape
qui contient une liste de codes RTA (région de tri d'acheminement). - Exemple 4:
eligibleRegion
avec un objetGeoShape
qui contient un identifiant de zone de marché désignée. - Exemple 5:
eligibleRegion
avec une liste d'objetsGeoShape
. Chacune contient un identifiant de zone de marché désignée. - Exemple 6:
ineligibleRegion
avec des codes postaux bloqués.
Exemple 1
eligibleRegion
par une liste de pays:
"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" } ] }
Exemple 2
eligibleRegion
par un objet GeoShape
qui
contient une liste de codes postaux:
"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" ] } }
Exemple 3
eligibleRegion
par un objet GeoShape
qui
contient une liste de codes RTA (région de tri d'acheminement) :
"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" ] } }
Exemple 4
eligibleRegion
par un objet GeoShape
qui
contient un identifiant de zone de marché désignée:
"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" } ] } }
Exemple 5
eligibleRegion
par une liste d'objets GeoShape
.
Chacune d'elles contient un identifiant de zone de marché désignée:
"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" } } ] }
Exemple 6
ineligibleRegion
avec des codes postaux bloqués:
"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" ] } }
Identifiant du droit d'accès
L'identifiant des droits d'accès, entitlementId
, fait référence à une chaîne qui représente
l'accès à un groupe de contenus
de votre catalogue multimédia. Pour déterminer si un utilisateur
a accès à votre contenu, Google prend les mesures suivantes:
- Un appel d'API est effectué Point de terminaison des droits d'accès pour recevoir les les identifiants des droits d'accès.
- Nous recherchons les identifiants des droits d'accès requis pour le contenu dans votre support Flux d'actions.
- Nous associons le
entitlementId
d'un utilisateur auxidentifier
de la classe media subscription dans votre flux. Si au moins sientitlementId
correspond, nous déterminons que l'utilisateur peut accéder de votre contenu.
Google vous recommande d'utiliser la syntaxe suivante pour entitlementId
:
<domain name> + colon (:) + <access level to content>
Exemples de syntaxe:
example.com:basic
example.com:premium
example.com:sports
Exemple d'identifiant de droit d'accès
Le flux de MediaExampleCompany indique que Movie XYZ
nécessite
example.com:basic
entitlementId
, comme indiqué ci-dessous:
{ "@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 ... }, ... } }, ... }
Cas d'utilisation courants de l'accès
Voici des cas d'utilisation courants des accès:
- Sans frais (pas de connexion requise) : l' le contenu est disponible sans connexion, abonnement ou achat.
- Sans frais (connexion requise) : le contenu nécessite que les utilisateurs soient connectés, mais ne nécessite pas d'abonnement.
- Abonnement à niveau unique: Le contenu nécessite un abonnement. Tous les abonnés peuvent accéder au même contenus (films ou épisodes), quel que soit le type d'abonnement d'un package.
- Abonnement à plusieurs niveaux : nécessite un abonnement. Les abonnés peuvent accéder à différents contenus, qu'il s'agisse de films ou d'épisodes, en fonction du niveau d'abonnement. Par exemple, Silver ou Gold.
- Add-on subscription (Abonnement au module complémentaire) : le contenu nécessite un abonnement. Les abonnés peuvent ajouter du contenu premium à leur un abonnement standard.
- Achat unique:le contenu peut après l'achat, après quoi l'utilisateur peut y accéder indéfiniment.
- Télévision en direct:l'abonnement inclut l'accès à locales, nationales et premium.
- Abonnement tiers: Pour accéder au contenu, l'utilisateur doit se connecter à son fournisseur d'accès au câble.
Sans frais (aucune connexion requise)
Aucune connexion requise
Le contenu est disponible sans connexion ni abonnement.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Définissez
category
surnologinrequired
. - N'incluez pas
expectAcceptanceOf
.
Sans frais (connexion requise)
Connexion requise
Le contenu nécessite que les utilisateurs soient connectés, mais il ne nécessite pas abonnement.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Définissez
category
surfree
. - N'incluez pas
expectAcceptanceOf
.
Abonnement à niveau unique
Dans un modèle d'abonnement à niveau unique, un fournisseur de services niveau d'abonnement. Tous les abonnés peuvent accéder au même contenu, des films ou des épisodes, quel que soit leur forfait d'abonnement.
{ "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" } } }
Abonnement à plusieurs niveaux
Dans un modèle d'abonnement à plusieurs niveaux, un fournisseur de services possède plusieurs différents niveaux d'abonnement, tels que Gold, Silver et Bronze : Les utilisateurs disposant de l'abonnement de niveau supérieur peuvent accéder au contenu de niveau inférieur. Toutefois, les utilisateurs bénéficiant du niveau d'accès le plus bas ne peut pas accéder au contenu de niveau supérieur.
Imaginez le scénario suivant :
- Jane s'abonne au niveau Or. Vos droits d'accès
Le point de terminaison renvoie les identifiants
entitlementId
suivants:example.com:bronze
example.com:silver
example.com:gold
- John s'abonne au niveau Bronze. Vos droits d'accès
renvoie le
entitlementId
suivant:example.com:bronze
- Votre flux Media Actions décrit les exigences suivantes:
- Le film A nécessite
example.com:bronze
. - Le film B nécessite
example.com:silver
.
- Le film A nécessite
Dans ce scénario, Google détermine les niveaux d'accès suivants pour Jane. et John:
- Jeanne et Jean ont tous les deux accès au film A.
- Jeanne a accès au film B, contrairement à Jean.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Abonnement complémentaire
Dans un modèle d'abonnement à des modules complémentaires, un fournisseur de services permet aux utilisateurs développer leurs droits d'accès et ajouter des chaînes à un abonnement de base. Utilisateurs peuvent ajouter autant de chaînes qu'ils le souhaitent.
Imaginez le scénario suivant :
- En plus des licences PRO et Sportz,
Basic. Le point de terminaison des droits d'accès renvoie le
Identifiants
entitlementId
suivants:example.com:basic
example.com:pro
example.com:sportz
- John dispose uniquement de l'abonnement Basic. Vos droits d'accès
renvoie le
entitlementId
suivant:example.com:basic
- Votre flux Media Actions décrit les exigences suivantes:
- Le film A nécessite
example.com:basic
. - Le film B nécessite
example.com:pro
.
- Le film A nécessite
Dans ce scénario, Google détermine les niveaux d'accès suivants pour Jane. et John:
- Jeanne et Jean ont tous les deux accès au film A.
- Jeanne a accès au film B, contrairement à Jean.
{ "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 } } } }
Achat unique
Achat
Le contenu est disponible pour une durée indéterminée après la à l'achat.
{ "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/" } } } }
- Définissez
category
surpurchase
. - Inclure
expectAcceptanceOf
dansactionAccessibilityRequirement
pour indiquer le prix à l'achat.
Location
Le contenu est disponible pendant une durée limitée après le à l'achat.
{ "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/" } } } }
- Définissez
category
surrental
. - Inclure
expectAcceptanceOf
dansactionAccessibilityRequirement
pour indiquer le prix en location.
TV en direct
Dans un flux Media Actions, vous pouvez restreindre l'accès à la télévision en direct channel ou événement en fonction de la les deux conditions utilisateur suivantes:
-
Position de l'appareil de l'utilisateur
Pour restreindre l'accès à la chaîne TV, spécifiez la zone géographique des utilisateurs y avoir accès. Cette condition s'applique généralement aux diffusions locales chaînes de télévision.
-
État du compte de l'utilisateur
Si l'accès à une chaîne de télévision dépend des paramètres au niveau du compte de l'utilisateur, utiliser identifiants des droits d'accès représentent la restriction.
Cette condition s'applique généralement aux cas d'utilisation suivants:
- Offre groupée:les chaînes nationales sont souvent incluses dans d'offres groupées, et les utilisateurs choisissent l'abonnement auquel ils souhaitent s'abonner.
- Module complémentaire:certaines chaînes premium nécessitent que les utilisateurs ajouter des chaînes à son abonnement de façon sélective.
- Regional Sports Network (RSN) : les RSN sont généralement associée à la "maison" d'un utilisateur l'emplacement. Les utilisateurs peuvent regarder du contenu sur le réseau RSN même lorsqu'ils sortent de chez eux l'emplacement.
Abonnement tiers
Abonnement tiers
Les abonnés peuvent accéder au contenu via un autre service.
{ "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" } } }
- Ajout de
authenticator
pour indiquer qu'un autre service authentifie les abonnés. Par exemple, HBO GO nécessite un auprès du fournisseur d'accès au câble.
Packages de niveau commun
Le contenu du niveau commun est accessible à tous les abonnés, quel que soit leur
d'abonnement payant. Le niveau commun s'applique à tous les contenus avec category
sur subscription
. Pour en savoir plus sur la propriété category
, consultez
Section Type de paywall.
Pourquoi un package de niveau commun est-il nécessaire ?
Plusieurs produits Google proposent des recommandations de films aux utilisateurs ; ce inclut la recherche Google, Android TV et l'Assistant Google. Pour définir les paramètres à leurs attentes en termes de coût, Google doit comprendre quel contenu est accessible à tous des abonnés en utilisant le niveau commun. Google doit également comprendre le contenu est disponible pour les abonnés ayant souscrit des formules d'abonnement spécifiques.
Google recommande les titres disponibles au niveau commun, sauf si vous acceptez les API entitlement. L'API permet à Google d'identifier les titres non communs à chaque niveau auquel l'utilisateur peut accéder.
Quand créer un package de niveau commun ?
Un package de niveau commun est requis lorsque votre service propose du contenu disponible pour tous les abonnés. Cela inclut les services qui n'offrent qu'un seul forfait et services qui proposent plusieurs forfaits ou modules complémentaires.
Les fournisseurs qui n'ont pas de contenu accessible à tous les abonnés n'ont pas besoin de créer un package de niveau commun. C'est par exemple le cas des fournisseurs de services qui s'excluent mutuellement du contenu dans tous leurs packages.
Exemples de niveaux courants
Voici des exemples de niveau commun.
Abonnement à plusieurs niveaux
Dans un modèle d'abonnement à plusieurs niveaux, un fournisseur de services (Gold, Silver et Bronze, par exemple). Les utilisateurs disposant du ont accès à tout le contenu des niveaux inférieurs. Utilisateurs avec un abonnement de niveau inférieur n'ont pas accès au contenu de la partie supérieure à un niveau supérieur. L'image suivante illustre la structure du package.
Dans l'exemple de code suivant, le package Bronze est le niveau commun, car tous les utilisateurs ont accès à l'ensemble du contenu de ce niveau.
"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 } ],
Modules complémentaires
Dans un modèle d'abonnement à des modules complémentaires, un fournisseur de services permet aux utilisateurs leurs droits d'accès et ajouter des chaînes à un abonnement de base. Les utilisateurs peuvent ajouter en tant que autant de canaux qu'ils le souhaitent. L'image suivante montre un exemple du package structure.
Si vous disposez d'une chaîne accessible à tous les utilisateurs et que la fonctionnalité vous pouvez fusionner le package avec le package de niveau commun.
Dans l'exemple de code suivant, le package de base est le niveau commun, car tous les utilisateurs ont accès à tout le contenu de ce package.
"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 } ],
Packages dont le contenu se recoupe
Dans un modèle de contenu dans lequel le contenu des packages se croise, un service le fournisseur vend des packages qui incluent du contenu provenant d'autres packages. La L'image suivante est un exemple de structure de package.
Dans l'exemple de code suivant, le fournisseur propose trois packages où certains le contenu recoupe tous les packages. Dans ce cas, un quatrième package qui représente le niveau commun. Il doit inclure l'ensemble du contenu disponible dans les trois packages.
"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 } ],
Packages sans contenus qui ne se chevauchent pas
Dans un modèle de contenu où tous les packages de contenu ne se croisent pas, un service le fournisseur vend des packages qui n'incluent aucun contenu d'autres packages. La L'image suivante est un exemple de structure de package.
Dans l'exemple suivant, le fournisseur propose trois packages sans contenu l’intersection entre tous les packages. Aucun package de niveau commun n'est requis.
"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 } ],
Point de terminaison des droits d'accès
Utilisez les informations de cette section pour héberger un point de terminaison HTTPS qui renvoie le des droits d'accès associés à un utilisateur.
Conditions préalables
Avant de commencer, vérifiez que votre service est compatible avec flux OAuth 2.0 avec Google.
Requête
Pour recevoir les droits d'accès d'un utilisateur, Google envoie une requête contenant les le jeton OAuth de l'utilisateur. Votre point de terminaison doit identifier l'utilisateur à l'aide de ce à partir d'un jeton d'accès. Consultez l'exemple ci-dessous :
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
Réponse
Votre point de terminaison doit renvoyer une réponse avec les propriétés suivantes:
Propriété | |
---|---|
subscription |
Obligatoire Il s'agit d'un champ dans la réponse racine. |
subscription.type |
Obligatoire Cette propriété peut avoir les valeurs suivantes:
|
subscription.expiration_date |
Optional Date d'expiration de ce droit d'accès, dans Format ISO 8601, qui inclut le fuseau horaire. Pour en savoir plus, consultez Dates d'expiration : |
entitlements |
Optional Cette propriété racine contient les valeurs |
entitlements.entitlement |
Obligatoire si l'accès à votre catalogue de streaming varie en fonction du type d'abonnement. Cette propriété contient la |
entitlements.expiration_date |
Optional Date d'expiration de cet abonnement, en Format ISO 8601, qui inclut le fuseau horaire. Pour en savoir plus, consultez Dates d'expiration : |
Dates d'expiration
Une réponse de point de terminaison comporte deux propriétés qui gèrent le délai d'expiration
dates: subscription.expiration_date
et entitlements.expiration_date
. Toi
peut inclure l'un d'entre eux ou aucun, mais pas les deux. Celle que vous utilisez dépend de
votre modèle d'abonnement.
Modèle d'abonnement | |
---|---|
L'accès à votre catalogue de streaming est le même pour tous les abonnés. | Parce que vous n'avez pas besoin de spécifier le entitlements
, spécifiez subscription.expiration_date . |
L'accès à votre catalogue de streaming varie en fonction des détails l'abonnement de l'utilisateur. |
Si votre modèle d'abonnement comporte plusieurs niveaux ou modules complémentaires expirent au fil du temps, effectuez l'une des opérations suivantes:
|
Exemples de réponses
Voici des exemples de réponses pour différents états d'abonnement:
- Abonnement actif
- Abonnement actif avec une date d'expiration
- Sans abonnement
- Abonnements actifs à plusieurs niveaux ou modules complémentaires
Abonnement actif
Abonnement actif
Un utilisateur dispose d'un abonnement actif à example.com. Dans ce tous les abonnés ont accès à l'intégralité de votre catalogue de streaming quel que soit leur type d'abonnement.
{ "subscription" : { "type": "ActiveSubscription", } }
Abonnement actif avec une date d'expiration
Abonnement actif avec une date d'expiration
Un utilisateur dispose d'un abonnement actif à example.com, et l'abonnement a une date d'expiration. Dans ce cas, tous les abonnés ont accéder à l'intégralité de votre catalogue de streaming, quel que soit leur abonnement ; de mots clés.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
Sans abonnement
Sans abonnement
Un utilisateur n'a pas d'abonnement à example.com.
{ "subscription" : { "type": "InactiveSubscription" } }
Abonnements actifs à plusieurs niveaux ou modules complémentaires
Abonnements actifs à plusieurs niveaux ou modules complémentaires
Un utilisateur est abonné à example.com:premium
jusqu'à une certaine date.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
Limite de débit
Google actualise les informations sur les droits d'accès d'un utilisateur toutes les six heures au maximum. À lisser le nombre maximal de requêtes par seconde (RPS), Google répartit les requêtes à votre terminal uniformément au fil du temps. Ainsi, vous pouvez estimer la moyenne attendue Nombre de RPS pour votre point de terminaison à l'aide de la formule suivante:
Nombre moyen de RPS attendu = <nombre total d'utilisateurs> / 21 600 secondes (6 heures x 60 minutes x 60 secondes)
Si vous proposez une gestion à un grand nombre d'utilisateurs, Google peut ajuster l'intervalle de six heures. Si nécessaire, contactez Google pour discuter de la configuration.
Contacter Google
Lorsque votre point de terminaison est prêt, contactez Google pour lui communiquer son URL.
Propriétés de spécification d'accès aux actions
Consultez le section Propriétés de spécification d'accès aux actions pour référence. des informations.