Los usuarios prefieren mirar o escuchar contenido al que ya pueden acceder, como el contenido de su suscripción existente. Si Google sabe qué contenido puede en tu app o plataforma, Google podrá crear un mejor resultado de la búsqueda para dirigir al usuario a ese contenido.
![](https://developers.google.cn/static/actions/media/images/image-entitlements-4.png?authuser=3&hl=es-419)
Identifica los requisitos de acceso al contenido
Debes identificar el requisito de acceso para cada paquete de contenido en tu en tu catálogo de productos. Cuando lo hagas, ten en cuenta las siguientes preguntas:
- ¿Los usuarios deben acceder a tu app o plataforma para ver el contenido?
¿Los usuarios necesitan una suscripción?
Solo para Acciones de reproducción:
- ¿Los usuarios necesitan una suscripción de un proveedor de servicios externo?
- ¿Ofreces una suscripción por niveles, de varios paquetes o con complementos?
Solo Acciones de reproducción: ¿Los usuarios deben alquilar o comprar el contenido?
¿Los requisitos de acceso cambian con el tiempo?
¿El requisito de acceso depende de la ubicación del dispositivo?
Tipos de restricción de acceso
Existen dos tipos de restricciones de acceso:
Tipo de muro de pago
Puedes restringir el acceso al contenido según el tipo de muro de pago. La siguiente tabla se detallan los diferentes tipos de muros de pago:
Tipo de muro de pago | Ejemplo | Categoría |
---|---|---|
No se requiere ninguna compra ni acceso. | Crackle | nologinrequired |
El usuario debe acceder, pero no necesita una suscripción pagada. | Vudu (AVOD) | free |
El usuario debe tener una suscripción activa. El acceso es independiente de el nivel de suscripción. | Netflix |
|
El usuario debe tener una suscripción activa. El acceso depende del nivel de suscripción. | Hulu (complementos) |
|
El contenido está disponible por un tiempo limitado después de la compra. | Vudu | rental |
El contenido está disponible por un período indefinido después de la compra. | Vudu | purchase |
El contenido está disponible mediante una suscripción de cable. | HBO Go | externalSubscription |
Tipo de muro de pago para las acciones de reproducción
Para especificar el tipo de muro de pago de contenido para las Acciones de reproducción, usa la
category
propiedad en la
Especificación de acceso a acciones:
"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"
}
},
...
}
Tipo de muro de pago para las acciones de escucha
Si quieres especificar el tipo de muro de pago de contenido para las acciones de escucha, usa la
category
propiedad en la
objeto de oferta:
"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"
}
},
...
}
Área geográfica
Debes especificar las áreas geográficas donde el contenido está disponible. Usa uno o de las siguientes propiedades:
- La propiedad
eligibleRegion
de un Especificación de acceso a acciones . Esta propiedad es obligatoria. - La propiedad
ineligibleRegion
de un Especificación de acceso a acciones .
Un usuario puede acceder al contenido si la ubicación del dispositivo está en cualquier región que
especificado en eligibleRegion
y no se encuentra en ninguna región que se especifica en
ineligibleRegion
Las propiedades eligibleRegion
y ineligibleRegion
permiten lo siguiente:
valores:
- Una lista de
Country
,City
yState
- Un objeto
GeoShape
. Consulta la PropiedadesGeoShape
para conocer los requisitos detallados. - Una lista de objetos
GeoShape
.
Si el contenido está disponible a nivel mundial, usa el siguiente valor especial para
eligibleRegion
"eligibleRegion": "EARTH",
Casos de uso de eligibleRegion
Los siguientes son ejemplos de casos de uso de la propiedad eligibleRegion
:
- Ejemplo 1:
eligibleRegion
con una lista de países. - Ejemplo 2:
eligibleRegion
con un objetoGeoShape
que contiene una lista de códigos postales. - Ejemplo 3:
eligibleRegion
con un objetoGeoShape
que contiene una lista de códigos del Área de clasificación directa (FSA). - Ejemplo 4:
eligibleRegion
con un objetoGeoShape
que contiene un ID de DMA. - Ejemplo 5:
eligibleRegion
con una lista de objetosGeoShape
. Cada uno contiene un ID de DMA. - Ejemplo 6:
ineligibleRegion
con códigos postales bloqueados.
Ejemplo 1
eligibleRegion
con una lista de países:
"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" } ] }
Ejemplo 2
eligibleRegion
con un objeto GeoShape
que
contiene una lista de códigos postales:
"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" ] } }
Ejemplo 3
eligibleRegion
con un objeto GeoShape
que
contiene una lista de códigos del Área de clasificación directa (FSA):
"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" ] } }
Ejemplo 4
eligibleRegion
con un objeto GeoShape
que
contiene un ID de DMA:
"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" } ] } }
Ejemplo 5
eligibleRegion
con una lista de objetos GeoShape
.
Cada uno contiene un ID de DMA:
"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" } } ] }
Ejemplo 6
ineligibleRegion
con códigos postales bloqueados:
"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" ] } }
Identificador de derechos
El identificador de derechos, entitlementId
, hace referencia a una cadena que representa
acceso a un grupo de contenido de tu catálogo de medios. Para determinar si un usuario
tiene acceso a tu contenido, Google sigue estos pasos:
- Hacemos una llamada a la API a tu Extremo de derechos para recibir las direcciones identificadores de derechos.
- Buscamos los identificadores de derechos necesarios para el contenido en tu contenido multimedia. Feed de acciones.
- Hacemos coincidir el
entitlementId
de un usuario conidentifier
propiedad del objeto de suscripción a medios de tu feed. Si al menos unaentitlementId
, determinamos que el usuario puede acceder a la contenido.
![](https://developers.google.cn/static/actions/media/images/image-entitlements-5.png?authuser=3&hl=es-419)
Google recomienda que uses la siguiente sintaxis para entitlementId
:
<domain name> + colon (:) + <access level to content>
Ejemplos de sintaxis:
example.com:basic
example.com:premium
example.com:sports
Ejemplo de identificador de derechos
El feed de MediaExampleCompany especifica que Movie XYZ
requiere la
example.com:basic
entitlementId
, como se muestra a continuación:
{ "@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 ... }, ... } }, ... }
Casos de uso de acceso comunes
Los siguientes son casos de uso de acceso comunes:
- Gratis (no se requiere acceso): Se trata de contenido está disponible sin acceso, suscripción ni compra.
- Gratuito (se requiere acceso): El contenido requiere que los usuarios accedan, pero no requiere una suscripción.
- Suscripción de un solo nivel: El contenido requiere una suscripción. Todos los suscriptores pueden acceder al mismo contenido, ya sean películas o episodios, independientemente de su suscripción .
- Suscripción de varios niveles: El contenido requiere una suscripción. Los suscriptores pueden acceder a distintos contenidos, ya sean películas o episodios, según su nivel de suscripción. Por ejemplo: Plata contra oro.
- Suscripción complementaria: El contenido requiere una suscripción. Los suscriptores pueden agregar contenido premium a su suscripción normal.
- Compra única: El contenido puede que se compre, después de lo cual el usuario podrá acceder a él de forma indefinida.
- TV en vivo: La suscripción incluye acceso a canales locales, nacionales y premium.
- Suscripción de terceros: El contenido requiere que el usuario acceda con su proveedor de cable.
Gratis (no se requiere acceso)
No se requiere acceso
El contenido está disponible sin acceso ni suscripción.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Establece
category
ennologinrequired
. - No incluyas
expectAcceptanceOf
.
Gratuito (es necesario acceder a la cuenta)
Se requiere acceder
El contenido requiere que los usuarios accedan, pero no requiere suscripción.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Establece
category
enfree
. - No incluyas
expectAcceptanceOf
.
Suscripción de un solo nivel
En un modelo de suscripción de un solo nivel, un proveedor de servicios tiene uno nivel de suscripción. Todos los suscriptores pueden acceder al mismo contenido, ya sea películas o episodios, independientemente del paquete de suscripción.
{ "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" } } }
Suscripción de varios niveles
En un modelo de suscripción por niveles, un proveedor de servicios tiene varios niveles de suscripción, como Oro, Plata y Bronce. Los usuarios que tengan la suscripción de nivel superior pueden acceder a todas el contenido de nivel inferior. Sin embargo, los usuarios con el nivel inferior suscripción no puede acceder al contenido de nivel superior.
![](https://developers.google.cn/static/actions/media/images/image-entitlements-2.png?authuser=3&hl=es-419)
Considera la siguiente situación:
- Jane se suscribe al nivel Oro. Tus derechos
El extremo muestra los siguientes identificadores
entitlementId
:example.com:bronze
example.com:silver
example.com:gold
- Juan está suscrito al nivel Bronce. Tus derechos
El extremo muestra el siguiente
entitlementId
:example.com:bronze
- En tu feed de Acciones multimedia, se describen los siguientes requisitos:
- La película A requiere
example.com:bronze
. - La película B requiere
example.com:silver
.
- La película A requiere
En esta situación, Google determina los siguientes niveles de acceso para Jane. y John:
- Tanto Juana como Juan tienen acceso a la Película A.
- Julia tiene acceso a la Película B, pero Juan no.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Suscripción complementaria
En un modelo de suscripción de complementos, un proveedor de servicios permite a los usuarios expandir sus derechos y agregar canales a una suscripción básica. Usuarios agregar todos los canales que desee.
![](https://developers.google.cn/static/actions/media/images/image-entitlements-3.png?authuser=3&hl=es-419)
Considera la siguiente situación:
- Jane tiene PRO y Sportz, además de
Basic. Tu extremo de derechos devuelve el
los siguientes identificadores
entitlementId
:example.com:basic
example.com:pro
example.com:sportz
- Juan solo tiene la suscripción Basic. Tus derechos
El extremo muestra el siguiente
entitlementId
:example.com:basic
- En tu feed de Acciones multimedia, se describen los siguientes requisitos:
- La película A requiere
example.com:basic
. - La película B requiere
example.com:pro
.
- La película A requiere
En esta situación, Google determina los siguientes niveles de acceso para Jane. y John:
- Tanto Juana como Juan tienen acceso a la Película A.
- Julia tiene acceso a la Película B, pero Juan no.
{ "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 } } } }
Compra única
Compra
El contenido está disponible por un período indefinido después de la compra.
{ "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/" } } } }
- Establece
category
enpurchase
. - Incluir
expectAcceptanceOf
enactionAccessibilityRequirement
para indicar el precio del compra.
Alquiler
El contenido está disponible por un tiempo limitado después de la compra.
{ "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/" } } } }
- Establece
category
enrental
. - Incluir
expectAcceptanceOf
enactionAccessibilityRequirement
para indicar el precio del alquiler.
TV en vivo
En un feed de Acciones multimedia, puedes restringir el acceso a una TV en vivo channel o evento basado en el siguientes dos condiciones de usuario:
-
La ubicación del dispositivo del usuario
Para restringir el acceso al canal de TV, especifica el área donde los usuarios tengan acceso a ellos. Esta condición, por lo general, se aplica a transmisiones locales canales de TV.
-
El estado de la cuenta del usuario
Si el acceso a un canal de TV depende de la configuración de la cuenta del usuario, usar identificadores de derechos representan la restricción.
Por lo general, esta condición se aplica a los siguientes casos de uso:
- Paquete: A menudo, los canales nacionales se incluyen en y los usuarios eligen a qué paquete quieren suscribirse.
- Complemento: Algunos canales premium requieren que los usuarios agregar de manera selectiva canales adicionales a su suscripción.
- Red deportiva regional (RSN): Por lo general, las RSN son asociados con la "casa" de un usuario ubicación. Los usuarios pueden mirar contenido en la RSN, incluso cuando viajan fuera de su "casa" ubicación.
Suscripción de terceros
Suscripción de terceros
El contenido está disponible para los suscriptores desde otro servicio.
{ "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" } } }
- Agrega
authenticator
para indicar que se trata de un servicio diferente. autentica a los suscriptores. Por ejemplo, HBO GO requiere una suscripción del proveedor de cable.
Paquetes de nivel común
El contenido de nivel común está disponible para todos los suscriptores, independientemente de su
de suscripción. El nivel común se aplica a todo el contenido con el category
.
de subscription
. Para obtener más información sobre la propiedad category
, consulta la
Sección Tipo de muro de pago.
¿Por qué se requiere un paquete de nivel común?
Varios productos de Google ofrecen servicios de recomendaciones de películas a los usuarios; este incluye la Búsqueda de Google, Android TV y Asistente de Google. Cómo configurar el usuario más expectativas sobre el costo, Google debe comprender qué contenido está disponible para todos suscriptores a través del nivel común. Google también debe entender qué el contenido está disponible para suscriptores con paquetes de suscripción específicos.
Google recomienda títulos disponibles en el nivel común, a menos que admitas la API de derechos. La API le permite a Google comprender los títulos de nivel poco común que cada uno de ellos el usuario puede acceder.
¿Cuándo debo crear un paquete de nivel común?
Se requiere un paquete de nivel común cuando tu servicio ofrece contenido que se que está disponible para todos los suscriptores. Esto incluye los servicios que ofrecen un solo paquete y servicios que ofrecen múltiples paquetes o complementos.
Los proveedores que no tienen contenido disponible para todos los suscriptores no necesitan crear un paquete de nivel común. Por ejemplo, los proveedores de servicios que brindan servicios contenido en todos sus paquetes.
Ejemplos de nivel común
Los siguientes son ejemplos del nivel común.
Suscripción por niveles
En un modelo de suscripción por niveles, un proveedor de servicios tiene varias suscripciones como Oro, Plata y Bronce. Usuarios con el las suscripciones de nivel superior tienen acceso a todo el contenido de los niveles inferiores. Usuarios con la suscripción del nivel inferior no tienen acceso al contenido del nivel superior. del nivel de servicio. La siguiente imagen es un ejemplo de la estructura del paquete.
![El nivel Oro contiene todo el contenido del nivel Plata, que
contiene todo el nivel Bronce.](https://developers.google.cn/static/actions/media/images/tieredsub.png?authuser=3&hl=es-419)
En el siguiente ejemplo de código, el paquete Bronze es el nivel común porque todos los usuarios tengan acceso a todo el contenido de ese nivel.
"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 } ],
Complementos
En un modelo de suscripción de complementos, un proveedor de servicios permite a los usuarios expandir sus derechos y agregar canales a una suscripción básica. Los usuarios pueden agregar como muchos canales como quieran. La siguiente imagen es un ejemplo del paquete en la nube.
![Todos los usuarios comienzan con el canal Básico y pueden optar por agregar
cualquier combinación de los canales PRO, Sportz y Moviemax.](https://developers.google.cn/static/actions/media/images/addonssub.png?authuser=3&hl=es-419)
Si tienes un canal disponible para todos los usuarios y no hay costo para el puedes combinar el paquete con el paquete de nivel común.
En el siguiente ejemplo de código, el paquete básico es el nivel común porque todos los usuarios tienen acceso a todo el contenido de este paquete.
"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 } ],
Paquetes con contenido que se superpone
En un modelo de contenido en el que los paquetes tienen contenido que se cruza, un servicio proveedor vende paquetes que incluyen cierto contenido de otros paquetes. El la siguiente imagen es un ejemplo de la estructura del paquete.
![Un diagrama de Venn en el que la superposición entre los paquetes 1, 2 y 3 es
con la etiqueta "Nivel común".](https://developers.google.cn/static/actions/media/images/intersect.png?authuser=3&hl=es-419)
En el siguiente ejemplo de código, el proveedor ofrece tres paquetes en los que se el contenido se cruza en todos los paquetes. En este caso, un cuarto paquete que representa el nivel común es obligatorio. Debe incluir todo el contenido disponibles en los tres paquetes.
"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 } ],
Paquetes sin contenido intersecto
En un modelo de contenido en el que los paquetes de contenido no se cruzan, un servicio proveedor vende paquetes que no incluyen contenido de otros paquetes. El la siguiente imagen es un ejemplo de la estructura del paquete.
![Los paquetes 1, 2 y 3 son completamente independientes.](https://developers.google.cn/static/actions/media/images/nointersect.png?authuser=3&hl=es-419)
En el siguiente ejemplo, el proveedor ofrece tres paquetes sin contenido que se cruzan en todos los paquetes. No se requiere un paquete de nivel común.
"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 } ],
Extremo de derechos
Usa la información de esta sección para alojar un extremo HTTPS que devuelva derechos asociados con un usuario.
Requisitos
Antes de comenzar, verifica que tu servicio admita Flujo de OAuth 2.0 con Google
Solicitud
Para recibir los derechos de un usuario, Google envía una solicitud que contiene el elemento token de OAuth del usuario. Tu extremo debe identificar al usuario en función de ese OAuth token. Consulta el siguiente ejemplo:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
Respuesta
Tu extremo debe mostrar una respuesta con las siguientes propiedades:
Propiedad | |
---|---|
subscription |
Obligatorio Este es un campo dentro de la respuesta raíz. |
subscription.type |
Obligatorio Esta propiedad puede tener los siguientes valores:
|
subscription.expiration_date |
Opcional La fecha de vencimiento de este derecho, en Formato ISO 8601, que incluye la zona horaria. Para obtener más detalles, consulta Fechas de vencimiento. |
entitlements |
Opcional Esta propiedad raíz contiene los valores |
entitlements.entitlement |
Obligatorio si el acceso a tu catálogo de transmisión varía según el tipo de suscripción. Esta propiedad contiene el |
entitlements.expiration_date |
Opcional La fecha de vencimiento de esta suscripción, en Formato ISO 8601, que incluye la zona horaria. Para obtener más detalles, consulta Fechas de vencimiento. |
Fechas de vencimiento
Hay dos propiedades en una respuesta de extremo que se ocupan del vencimiento
fechas: subscription.expiration_date
y entitlements.expiration_date
. Tú
puede incluir una o ninguna, pero no ambas. El modelo que uses dependerá de
tu modelo de suscripción.
Modelo de suscripción | |
---|---|
El acceso a tu catálogo de transmisión es el mismo para todos los suscriptores. | Porque no necesitas especificar el entitlements
del grupo de anuncios, especifica subscription.expiration_date . |
El acceso a tu catálogo de transmisión varía según los detalles de un suscripción del usuario. |
Si tu modelo de suscripción tiene varios niveles o complementos que vencerán con el tiempo, realiza una de las siguientes acciones:
|
Respuestas de ejemplo
Las siguientes son respuestas de ejemplo de diferentes estados de suscripción:
- Suscripción activa
- Suscripción activa con fecha de vencimiento
- Sin suscripción
- Suscripciones activas a varios niveles o complementos
Suscripción activa
Suscripción activa
Un usuario tiene una suscripción activa a example.com. En este caso, todos los suscriptores tienen acceso a todo tu catálogo de transmisiones independientemente del tipo de suscripción.
{ "subscription" : { "type": "ActiveSubscription", } }
Suscripción activa con fecha de vencimiento
Suscripción activa con fecha de vencimiento
Un usuario tiene una suscripción activa a example.com, y suscripción tiene una fecha de vencimiento. En este caso, todos los suscriptores tienen acceso a todo tu catálogo de transmisión, sin importar la suscripción que tengan el tipo de letra.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
Sin suscripción
Sin suscripción
Un usuario no tiene una suscripción a example.com.
{ "subscription" : { "type": "InactiveSubscription" } }
Suscripciones activas a varios niveles o complementos
Suscripciones activas a varios niveles o complementos
Un usuario tiene una suscripción a example.com:premium
hasta una fecha determinada.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
Límite de frecuencia
Google actualiza la información sobre derechos del usuario hasta cada seis horas. Para para optimizar la cantidad máxima de consultas por segundo (QPS), Google distribuye las consultas a tu extremo de manera uniforme. Así, puedes estimar el promedio esperado QPS para tu extremo con la siguiente fórmula:
Promedio esperado de QPS = <cantidad total de usuarios> / 21,600 segundos (6 horas × 60 minutos × 60 segundos)
Si brindas asistencia a una gran cantidad de usuarios, Google puede ajustar el intervalo de 6 horas. Si es necesario, comunícate con Google para analizar la configuración.
Comunicarse con Google
Cuando tu extremo esté listo, comunícate con Google para informar su URL.
Propiedades de especificación de acceso a acciones
Consulta la sección de propiedades de acción de acceso como referencia información.