> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Concesión de acceso a los jugadores al contenido de complemento

> Conceda a los jugadores acceso al contenido de complemento de XBOX mediante derechos y licencias, incluidos duraderos, consumibles, lotes y derechos compartidos.

Muchos títulos ofrecen contenido de complemento para su compra en Microsoft Store y dentro de una tienda del juego. Los derechos y las licencias son dos sistemas que ayudan a determinar si se debe conceder a un jugador acceso al contenido de complemento dentro de un juego. El enfoque que use depende del tipo de contenido (como duradero, consumible o lote) y del diseño del juego. Puede administrar los derechos de consumibles desde un servicio, adquirir licencias de duraderos mediante el cliente o usar una combinación de derechos y licencias para controlar el acceso al contenido dentro de su juego.

## Derechos

Un derecho representa el derecho del cliente a acceder a un producto digital y usarlo, incluidos juegos, suscripciones y complementos. Cada compra o canje realizado en Microsoft Store da como resultado uno o más derechos de los que el servicio de colecciones de Microsoft hace el seguimiento. Para obtener más información sobre los tipos de producto que funcionan con derechos, consulte [Elección del tipo de producto correcto](/publishing/xstore-commerce/xstore-choosing-product-type).

Los derechos de producto se pueden conceder mediante la compra directa del producto por parte del jugador, la compra de un producto satisfactorio (como un lote o una suscripción) o un derecho compartido de otro usuario. Los derechos admiten varios estados: activo, inactivo, expirado y revocado.

Los clientes y servicios del juego pueden consultar los derechos de un jugador, pero los resultados pueden diferir:

* Las API de cliente solo pueden devolver derechos con estado activo, pero pueden devolver todos los tipos de derecho (directo, compartido, satisfactorio). Sin embargo, el tipo de un derecho es invisible para el cliente.
* Las API de servicio pueden devolver derechos de cualquier estado, pero no pueden devolver derechos compartidos porque carecen de contexto de dispositivo. Sin embargo, pueden distinguir entre derechos directos y satisfactorios.

### Uso compartido de derechos y disponibilidad sin conexión

* Cuando la cuenta propietaria del producto designa el dispositivo actual como su dispositivo sin conexión (mediante **Home XBOX** en la consola u **Offline permissions** en PC), comparte sus derechos no consumibles con las demás cuentas del dispositivo.
* Los derechos de consumibles son derechos directos que están vinculados a la cuenta de compra y no se pueden compartir con otras cuentas del dispositivo.
* Todas las consultas de derechos requieren una conexión en línea. No use derechos para determinar los derechos de acceso de un jugador sin conexión. Use [licencias](#licensing) en su lugar.

### Uso de derechos para un cliente de juego

Cada vez que el cliente envía una solicitud de catálogo, envía una llamada correspondiente al servicio de colecciones para rellenar la propiedad `IsInUserCollection` de cada [XStoreProduct](/reference/system/xstore/xstore_members) devuelto. Si `IsInUserCollection` es true, indica que el jugador tiene derecho a usar el producto. Use este valor al decidir qué productos aparecen como comprables o ya "en propiedad" del jugador en la tienda del juego.

Puede recuperar los detalles de XStoreProduct para el contenido de complemento mediante los métodos siguientes:

* [XStoreQueryAssociatedProductsAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members): devuelve solo productos comprables. El resultado no incluye productos ocultos, disponibles únicamente en un lote o que ya no se pueden comprar en Microsoft Store.
* [XStoreQueryProductsAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members): se usa para consultar productos específicos. Use esta función para comprobar cambios de derechos de un único producto o de un subconjunto de productos.

Para consultar en el servicio de colecciones todos los derechos activos, incluidos los productos ocultos o que ya no se pueden comprar en Microsoft Store, llame a:

* [XStoreQueryEntitledProductsAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members)

Se recomienda comprobar los cambios de derechos cuando el juego recupera el foco (PC) o vuelve de un estado restringido (consola), ya que el jugador podría adquirir contenido nuevo mientras está fuera del juego. Si el contenido de complemento está disponible para su compra en tiendas externas (Microsoft Store, XBOX App, xbox.com), la compra puede producirse en cualquier momento en otro dispositivo sin que el cliente lo detecte.

Compruebe si hay derechos nuevos en puntos estratégicos del juego, por ejemplo, cuando el jugador visita una tienda o un menú de inventario. O bien, su título puede sondear actualizaciones de forma ocasional para reducir los retrasos entre la compra de un producto por parte del jugador y la disponibilidad del contenido en el juego.

Para obtener más información sobre cómo consultar productos y derechos desde el cliente, consulte [Operaciones básicas de la Store](/publishing/xstore-commerce/xstore-basic-operations).

### Uso de derechos para un servicio de juego

Hay opciones más avanzadas para consultar y administrar derechos cuando se usa un servicio de juego. A continuación se muestra una pequeña muestra de lo que es posible:

* Consultar los derechos de un usuario en todo el catálogo del publicador.
* Distinguir entre derechos directos y satisfactorios para comprender mejor cómo adquieren contenido los jugadores.
* Consultar derechos inactivos con una fecha de inicio futura para detectar compras que aún están en estado de reserva.
* Administrar un ecosistema de consumibles sólido y multiplataforma (consulte [Ecosistemas basados en consumibles](/publishing/xstore-commerce/xstore-consumables)).
* Detectar cuándo se reembolsan productos con el servicio Clawback (consulte [Administración de reembolsos y contracargos desde su servicio](/publishing/xstore-commerce/xstore-managing-refunds)).
* Detectar el estado de suscripción a XBOX Game Pass para otorgar ventajas a los suscriptores en su juego (consulte [Detección del acceso a la suscripción de XBOX Game Pass desde su servicio](/publishing/xstore-commerce/xstore-detecting-game-pass)).

Para obtener más información sobre las ofertas de servicio a servicio, consulte [Administración de productos desde su servicio](/publishing/xstore-commerce/xstore-authenticating-service).

### Consideraciones sobre los derechos

* Cuando opera en un sandbox de desarrollador en PC, el cliente realiza todas las consultas de derechos en nombre de la cuenta con sesión iniciada en la XBOX App.
* Cuando opera en RETAIL en PC, el cliente realiza todas las consultas de derechos en nombre de la cuenta con sesión iniciada en Microsoft Store. Pueden producirse escenarios de cuentas no coincidentes cuando la cuenta con sesión iniciada en el juego no coincide con la cuenta con sesión iniciada en Microsoft Store (consulte [Control de cuentas de la Store no coincidentes](/publishing/xstore-commerce/xstore-mismatched-accounts) para obtener detalles).

Para solucionar problemas comunes con los derechos, consulte [Solución de problemas de desarrollo con XStore](/publishing/xstore-commerce/xstore-troubleshooting).

## Licencias

Una licencia es una clave digital que confirma el derecho del usuario a acceder al contenido en el dispositivo. El usuario debe tener derecho a usar el producto o insertar un disco que incluya el producto (juegos y duraderos con paquetes) antes de que se pueda adquirir una licencia.

Cuando trabaje con un duradero (con o sin paquete), use licencias para cumplir las expectativas en torno al uso compartido, la simultaneidad y la disponibilidad sin conexión (consulte [Modelo de uso compartido de productos para juegos](/publishing/xstore-commerce/xstore-product-sharing)).

Las licencias están sujetas a limitaciones de dispositivo y comprobaciones de simultaneidad según el modelo de licencia que use el juego (consulte [Licencias abiertas y restrictivas](/publishing/xstore-commerce/xstore-open-restrictive-licensing). Incluso si un jugador tiene un derecho activo sobre el producto, podría no poder adquirir una licencia válida para su uso en el dispositivo.

### Uso compartido de licencias y disponibilidad sin conexión

El uso compartido de licencias se produce en el dispositivo cuando una o varias de estas condiciones son verdaderas:

* El juego adquirió una licencia mientras la cuenta de un propietario tenía la sesión iniciada y había una conexión en línea establecida.
* El juego adquirió una licencia sin conexión para la cuenta del propietario en el dispositivo sin conexión (**Home XBOX** en la consola u **Offline permissions** en PC). La cuenta propietaria no necesita tener la sesión iniciada en el dispositivo para compartir sus licencias con otras cuentas en este escenario.
* El jugador inserta un disco que incluye el DLC (duradero con paquete) y el DLC está instalado en el dispositivo.

Las licencias están disponibles sin conexión cuando una o varias de estas condiciones son verdaderas:

* La cuenta propietaria del producto designa el dispositivo actual como su dispositivo "sin conexión" (mediante **Home XBOX** en la consola u **Offline permissions** en PC). Una vez habilitada la designación sin conexión, el juego debe adquirir una licencia para el producto duradero mientras está en línea. La próxima vez que se inicie el juego, adquiere la licencia con capacidad sin conexión.
* El jugador inserta un disco que incluye el DLC (duradero con paquete) y el DLC está instalado en el dispositivo.

### Uso de licencias para un cliente de juego

Puede licenciar un duradero (con o sin paquete) mediante el flujo siguiente:

* [XStoreCanAcquireLicenseForStoreIdAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) obtiene una vista previa de una licencia sin invocar una comprobación de simultaneidad. Si [XStoreCanLicenseStatus](/reference/system/xstore/xstore_members) es `Licensable`, el juego puede intentar adquirir una licencia de duradero. Esta comprobación de vista previa requiere una conexión en línea.
* [XStoreAcquireLicenseForDurablesAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) llama al servicio de licencias para adquirir una licencia si no hay licencia en el dispositivo o si la licencia actual ha expirado. Se devuelve una licencia almacenada en caché cuando ya hay disponible en el dispositivo una licencia activa para el producto o cuando esta API se llama sin conexión. Si se devuelve una licencia almacenada en caché, podría no ser válida para el jugador actual.
* Llame siempre a [XStoreIsLicenseValid](/reference/system/xstore/xstore_members) para comprobar si la licencia es válida antes de desbloquear contenido en el juego.
* Si adquiere una licencia válida, use [XStoreRegisterPackageLicenseLost](/reference/system/xstore/xstore_members) para escuchar los eventos de pérdida de licencia. Si se pierde una licencia, intente volver a adquirirla. Si la licencia no se puede volver a adquirir, decida cuándo bloquear el acceso del jugador al contenido, o si hacerlo (según el diseño del juego).
* Después de controlar un evento de pérdida de licencia, llame a [XStoreUnregisterPackageLicenseLost](/reference/system/xstore/xstore_members) y libere el identificador de la licencia anterior llamando a [XStoreCloseLicenseHandle](/reference/system/xstore/xstore_members).

Para ver un ejemplo de cómo usar XStoreAcquireLicenseForDurablesAsync, consulte [Cómo usar un producto duradero sin paquete](/publishing/xstore-commerce/xstore-dwob).

Un duradero con paquete (DLC) puede incluirse como parte de un lote de juego en disco. El usuario debe insertar el disco e instalar el DLC antes de que el juego pueda adquirir una licencia. Si el DLC se incluye en disco, o el juego usa las API de [XPackage](/reference/system/xstore/xstore_members) para enumerar los paquetes instalados, se recomienda usar la variante \*ForPackage de cada API de licencias: [XStoreCanAcquireLicenseForPackageAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) y [XStoreAcquireLicenseForPackageAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members).

Para ver un ejemplo de enumeración de paquetes instalados y licencias de DLC, consulte [Administración y licencias de contenido descargable (DLC)](/publishing/xstore-commerce/xstore-dlc).

### Uso de licencias para un servicio de juego

Las licencias están vinculadas al dispositivo y no se pueden consultar desde un servicio de juego. Sin embargo, el cliente puede llamar a [XStoreQueryLicenseTokenAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) para proporcionar una validación adicional mediante un servicio de juego. Para obtener más información, consulte [Uso de tokens de licencia](/publishing/xstore-commerce/xstore-license-tokens).

### Consideraciones sobre las licencias

* Puede haber un retraso entre el momento en que se completa una compra y cuando se puede adquirir una nueva licencia. Compruebe los cambios en los [derechos](#entitlements) de un usuario y adquiera una licencia después de que se agregue un nuevo derecho para un producto duradero.
* Las licencias de prueba se conceden automáticamente para los duraderos con paquetes al implementar paquetes cargados localmente (side-loaded). Para probar escenarios de licencias para duraderos con paquetes, use invalidaciones de licencias o paquetes instalados desde la Store en su lugar. Para obtener más información, consulte [Habilitación de las pruebas de licencias](/publishing/xstore-commerce/xstore-licensing-setup).
* Cuando un juego adquiere una licencia de duradero, la licencia se almacena en caché en el dispositivo. Las licencias se extraen de la caché hasta que el sistema desencadena una actualización de licencia (no hay ninguna API que pueda forzar una actualización). Las llamadas repetidas a XStoreAcquireLicense\* comprueban la caché del dispositivo y no el servicio.
* Las devoluciones de llamada de pérdida de licencia pueden ayudar a detectar si el sistema devuelve por error al jugador actual una licencia almacenada en caché que pertenece a otra cuenta. En esos casos, un evento de pérdida de licencia se activa de inmediato y, si se vuelve a llamar a XStoreAcquireLicense\*, se proporciona una licencia nueva.
* El uso compartido y el almacenamiento en caché de licencias pueden dejar las máquinas de prueba en un estado no limpio. Para obtener más información, consulte [Solución de problemas de desarrollo con XStore](/publishing/xstore-commerce/xstore-troubleshooting).

## Recursos de ejemplo

Para obtener código de ejemplo que muestra cómo consultar los derechos del jugador y adquirir licencias de duraderos, consulte los recursos siguientes:

* [Ejemplo InGameStore (GitHub)](https://github.com/microsoft/Xbox-GDK-Samples/tree/main/Samples/Live/InGameStore): ejemplo en C++ que muestra la funcionalidad de XStore, incluida la recuperación de productos, la compra, los derechos y las licencias de duraderos.
* [Ejemplo DownloadableContent (GitHub)](https://github.com/microsoft/Xbox-GDK-Samples/tree/main/Samples/Live/DownloadableContent): ejemplo en C++ que muestra la funcionalidad de XStore y XPackage, incluida la enumeración y la concesión de licencias de duraderos con paquete.
* [Ejemplo UnityInGameStore (GitHub)](https://github.com/microsoft/Xbox-GDK-Samples/tree/main/Samples/Unity/Live/UnityInGameStore): ejemplo en C# que muestra la funcionalidad de XStore mediante el motor de juego Unity y el paquete de API del Microsoft GDK.

## Documentación de referencia de la API

* [XStore (contenido de la API)](/reference/system/xstore/xstore_members)
  * Funciones
    * [XStoreQueryAssociatedProductsAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreQueryProductsAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreQueryEntitledProductsAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreCanAcquireLicenseForStoreIdAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreAcquireLicenseForDurablesAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreIsLicenseValid](/reference/system/xstore/xstore_members)
    * [XStoreRegisterPackageLicenseLost](/reference/system/xstore/xstore_members)
    * [XStoreUnregisterPackageLicenseLost](/reference/system/xstore/xstore_members)
    * [XStoreCloseLicenseHandle](/reference/system/xstore/xstore_members)
    * [XStoreCanAcquireLicenseForPackageAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreAcquireLicenseForPackageAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreQueryLicenseTokenAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
  * Estructuras
    * [XStoreProduct](/reference/system/xstore/xstore_members)
* [XPackage (contenido de la API)](/reference/system/xstore/xstore_members)

## Consulte también

[Información general sobre comercio](/publishing/xstore-commerce/xstore-commerce-overview)<br />[Referencia de la API XStore](/reference/system/xstore/xstore_members)


## Related topics

- [XStoreIsLicenseValid](/es/reference/system/xstore/functions/xstoreislicensevalid.md)
- [XStoreCloseLicenseHandle](/es/reference/system/xstore/functions/xstorecloselicensehandle.md)
- [XStoreCanAcquireLicenseForPackageAsync](/es/reference/system/xstore/functions/xstorecanacquirelicenseforpackageasync.md)
- [XStoreCanAcquireLicenseForStoreIdAsync](/es/reference/system/xstore/functions/xstorecanacquirelicenseforstoreidasync.md)
- [XStoreRegisterPackageLicenseLost](/es/reference/system/xstore/functions/xstoreregisterpackagelicenselost.md)
