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. 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 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 propiedadIsInUserCollection de cada XStoreProduct 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 / Result: 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 / Result: 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.
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).
- Detectar cuándo se reembolsan productos con el servicio Clawback (consulte Administración de reembolsos y contracargos desde su servicio).
- 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).
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 para obtener detalles).
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). 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. 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.
- 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 / Result obtiene una vista previa de una licencia sin invocar una comprobación de simultaneidad. Si XStoreCanLicenseStatus 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 / Result 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 para comprobar si la licencia es válida antes de desbloquear contenido en el juego.
- Si adquiere una licencia válida, use XStoreRegisterPackageLicenseLost 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 y libere el identificador de la licencia anterior llamando a XStoreCloseLicenseHandle.
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 / Result para proporcionar una validación adicional mediante un servicio de juego. Para obtener más información, consulte Uso de tokens de licencia.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 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.
- 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.
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): 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): 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): 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)
- Funciones
- XStoreQueryAssociatedProductsAsync
- Result
- XStoreQueryProductsAsync
- Result
- XStoreQueryEntitledProductsAsync
- Result
- XStoreCanAcquireLicenseForStoreIdAsync
- Result
- XStoreAcquireLicenseForDurablesAsync
- Result
- XStoreIsLicenseValid
- XStoreRegisterPackageLicenseLost
- XStoreUnregisterPackageLicenseLost
- XStoreCloseLicenseHandle
- XStoreCanAcquireLicenseForPackageAsync
- Result
- XStoreAcquireLicenseForPackageAsync
- Result
- XStoreQueryLicenseTokenAsync
- Result
- Estructuras
- Funciones
- XPackage (contenido de la API)
Consulte también
Información general sobre comercioReferencia de la API XStore
