Droits d’utilisation
Un droit d’utilisation représente le droit du client d’accéder à un produit numérique et de l’utiliser, notamment des jeux, des abonnements et des modules complémentaires. Chaque achat ou échange effectué dans le Microsoft Store génère un ou plusieurs droits d’utilisation suivis par le service de collections de Microsoft. Pour plus d’informations sur les types de produits qui fonctionnent avec les droits d’utilisation, consultez Choisir le bon type de produit. Les droits d’utilisation d’un produit peuvent être accordés par l’achat direct du produit par le joueur, par l’achat d’un produit qui le satisfait (comme un ensemble ou un abonnement) ou par un droit d’utilisation partagé par un autre utilisateur. Les droits d’utilisation prennent en charge plusieurs états : actif, inactif, expiré et révoqué. Les clients et les services de jeu peuvent interroger les droits d’utilisation d’un joueur, mais les résultats peuvent différer :- Les API clientes peuvent uniquement retourner les droits d’utilisation à l’état actif, mais elles peuvent retourner tous les types de droits d’utilisation (directs, partagés, satisfaisants). Toutefois, le type d’un droit d’utilisation est invisible pour le client.
- Les API de service peuvent retourner des droits d’utilisation dans n’importe quel état, mais elles ne peuvent pas retourner les droits d’utilisation partagés, car elles n’ont pas le contexte de l’appareil. Elles peuvent toutefois distinguer les droits d’utilisation directs des droits d’utilisation satisfaisants.
Partage des droits d’utilisation et disponibilité hors connexion
- Lorsque le compte propriétaire du produit désigne l’appareil actuel comme son appareil hors connexion (au moyen de XBOX principale sur console ou des autorisations hors connexion sur PC), il partage ses droits d’utilisation non consommables avec les autres comptes de l’appareil.
- Les droits d’utilisation de consommables sont des droits d’utilisation directs liés au compte acheteur et ne peuvent pas être partagés avec d’autres comptes de l’appareil.
- Toutes les requêtes de droits d’utilisation nécessitent une connexion en ligne. N’utilisez pas les droits d’utilisation pour déterminer les droits d’accès d’un joueur hors connexion. Utilisez plutôt les licences.
Utilisation des droits d’utilisation pour un client de jeu
Chaque fois que le client envoie une requête de catalogue, il envoie un appel correspondant au service de collections pour remplir la propriétéIsInUserCollection de chaque XStoreProduct retourné. Si IsInUserCollection a la valeur true, cela indique que le joueur a le droit d’utiliser le produit. Utilisez cette valeur pour décider quels produits apparaissent comme achetables ou comme déjà « possédés » par le joueur dans votre boutique intégrée au jeu.
Vous pouvez récupérer les détails XStoreProduct du contenu des modules complémentaires au moyen des méthodes suivantes :
- XStoreQueryAssociatedProductsAsync / Result : retourne uniquement les produits achetables. Le résultat n’inclut pas les produits masqués, offerts seulement dans un ensemble ou qui ne sont plus achetables dans le Microsoft Store.
- XStoreQueryProductsAsync / Result : sert à interroger des produits précis. Utilisez cette fonction pour vérifier les changements de droits d’utilisation d’un seul produit ou d’un sous-ensemble de produits.
Utilisation des droits d’utilisation pour un service de jeu
Des options plus avancées d’interrogation et de gestion des droits d’utilisation sont offertes lorsque vous utilisez un service de jeu. Voici un petit aperçu de ce qui est possible :- Interroger les droits d’utilisation d’un utilisateur dans l’ensemble du catalogue de l’éditeur.
- Distinguer les droits d’utilisation directs des droits d’utilisation satisfaisants pour mieux comprendre comment les joueurs acquièrent du contenu.
- Interroger les droits d’utilisation inactifs dont la date de début est future pour détecter les achats encore à l’état de précommande.
- Gérer un écosystème de consommables robuste et multiplateforme (consultez Écosystèmes basés sur les consommables).
- Détecter le remboursement de produits à l’aide du service Clawback (consultez Gestion des remboursements et des rétrofacturations à partir de votre service).
- Détecter l’état de l’abonnement XBOX Game Pass pour accorder des avantages aux abonnés dans votre jeu (consultez Détection de l’accès à l’abonnement XBOX Game Pass à partir de votre service).
Considérations relatives aux droits d’utilisation
- Lorsque vous travaillez dans un sandbox de développement sur PC, le client effectue toutes les requêtes de droits d’utilisation au nom du compte connecté à l’application XBOX.
- Lorsque vous travaillez dans RETAIL sur PC, le client effectue toutes les requêtes de droits d’utilisation au nom du compte connecté au Microsoft Store. Des scénarios de comptes non concordants peuvent se produire lorsque le compte connecté au jeu ne correspond pas au compte connecté au Microsoft Store (consultez Gestion des comptes du Store non concordants pour plus de détails).
Licences
Une licence est une clé numérique qui confirme le droit de l’utilisateur d’accéder au contenu sur l’appareil. L’utilisateur doit avoir le droit d’utiliser le produit ou insérer un disque qui contient le produit (jeux et produits durables avec package) avant qu’une licence puisse être acquise. Lorsque vous travaillez avec un produit durable (avec ou sans package), utilisez les licences pour répondre aux attentes en matière de partage, de simultanéité et de disponibilité hors connexion (consultez le modèle de partage de produits pour les jeux). Les licences sont soumises à des limites d’appareils et à des vérifications de simultanéité qui dépendent du modèle de licence utilisé par le jeu (consultez Licences ouvertes et restrictives. Même si un joueur dispose d’un droit d’utilisation actif pour le produit, il peut ne pas réussir à acquérir une licence valide pour l’utiliser sur l’appareil.Partage des licences et disponibilité hors connexion
Le partage des licences se produit sur l’appareil lorsqu’une ou plusieurs de ces conditions sont remplies :- Le jeu a acquis une licence pendant que le compte d’un propriétaire était connecté et qu’une connexion en ligne était établie.
- Le jeu a acquis une licence hors connexion pour le compte du propriétaire en tant qu’appareil hors connexion (XBOX principale sur console ou autorisations hors connexion sur PC). Dans ce scénario, le compte propriétaire n’a pas besoin d’être connecté à l’appareil pour partager ses licences avec les autres comptes.
- Le joueur insère un disque qui contient le DLC (produit durable avec package) et le DLC est installé sur l’appareil.
- Le compte propriétaire du produit désigne l’appareil actuel comme son appareil « hors connexion » (au moyen de XBOX principale sur console ou des autorisations hors connexion sur PC). Une fois la désignation hors connexion activée, le jeu doit acquérir une licence pour le produit durable pendant qu’il est en ligne. Au prochain lancement du jeu, celui-ci acquiert la licence utilisable hors connexion.
- Le joueur insère un disque qui contient le DLC (produit durable avec package) et le DLC est installé sur l’appareil.
Utilisation des licences pour un client de jeu
Vous pouvez obtenir la licence d’un produit durable (avec ou sans package) en utilisant le flux suivant :- XStoreCanAcquireLicenseForStoreIdAsync / Result donne un aperçu d’une licence sans déclencher de vérification de simultanéité. Si XStoreCanLicenseStatus a la valeur
Licensable, le jeu peut tenter d’acquérir une licence de produit durable. Cette vérification préalable nécessite une connexion en ligne. - XStoreAcquireLicenseForDurablesAsync / Result appelle le service de licences pour acquérir une licence s’il n’y a aucune licence sur l’appareil ou si la licence actuelle est expirée. Une licence mise en cache est retournée lorsqu’une licence active pour le produit est déjà disponible sur l’appareil ou lorsque cette API est appelée hors connexion. Si une licence mise en cache est retournée, elle peut ne pas être valide pour le joueur actuel.
- Appelez toujours XStoreIsLicenseValid pour vérifier si la licence est valide avant de déverrouiller du contenu dans le jeu.
- Si vous acquérez une licence valide, utilisez XStoreRegisterPackageLicenseLost pour être à l’écoute des événements de perte de licence. Si une licence est perdue, tentez de l’acquérir de nouveau. Si la licence ne peut pas être acquise de nouveau, décidez quand ou si vous bloquez l’accès du joueur au contenu (selon la conception du jeu).
- Après avoir traité un événement de perte de licence, appelez XStoreUnregisterPackageLicenseLost et libérez l’ancien handle de licence en appelant XStoreCloseLicenseHandle.
Utilisation des licences pour un service de jeu
Les licences sont liées à l’appareil et ne peuvent pas être interrogées à partir d’un service de jeu. Toutefois, le client peut appeler XStoreQueryLicenseTokenAsync / Result pour fournir une validation supplémentaire au moyen d’un service de jeu. Pour plus d’informations, consultez Utilisation des jetons de licence.Considérations relatives aux licences
- Il peut y avoir un délai entre le moment où un achat est effectué et celui où une nouvelle licence peut être acquise. Vérifiez les changements apportés aux droits d’utilisation d’un utilisateur et acquérez une licence après l’ajout d’un nouveau droit d’utilisation pour un produit durable.
- Des licences de test sont automatiquement accordées pour les produits durables avec package lors du déploiement de packages chargés indépendamment. Pour tester les scénarios de licence des produits durables avec package, utilisez plutôt des substitutions de licence ou des packages installés à partir du Store. Pour plus d’informations, consultez Activation des tests de licence.
- Lorsqu’un jeu acquiert la licence d’un produit durable, la licence est mise en cache sur l’appareil. Les licences sont extraites du cache jusqu’à ce que le système déclenche une actualisation des licences (aucune API ne permet de forcer une actualisation). Les appels répétés à XStoreAcquireLicense* vérifient le cache de l’appareil et non le service.
- Les rappels de perte de licence peuvent aider à détecter si le système retourne par erreur au joueur actuel une licence mise en cache qui appartient à un autre compte. Dans ce cas, un événement de perte de licence se déclenche immédiatement et, si XStoreAcquireLicense* est appelé de nouveau, une nouvelle licence est fournie.
- Le partage et la mise en cache des licences peuvent laisser les machines de test dans un état non propre. Pour plus d’informations, consultez Dépannage du développement XStore.
Exemples de ressources
Pour des exemples de code qui montrent comment interroger les droits d’utilisation des joueurs et acquérir des licences de produits durables, consultez les ressources suivantes :- Exemple InGameStore (GitHub) : exemple C++ illustrant les fonctionnalités XStore, notamment la récupération de produits, l’achat, les droits d’utilisation et les licences de produits durables.
- Exemple DownloadableContent (GitHub) : exemple C++ illustrant les fonctionnalités XStore et XPackage, notamment l’énumération et l’obtention de licences de produits durables avec package.
- Exemple UnityInGameStore (GitHub) : exemple C# illustrant les fonctionnalités XStore à l’aide du moteur de jeu Unity et du package d’API Microsoft GDK.
Documentation de référence de l’API
- XStore (contenu de l’API)
- Fonctions
- XStoreQueryAssociatedProductsAsync
- Result
- XStoreQueryProductsAsync
- Result
- XStoreQueryEntitledProductsAsync
- Result
- XStoreCanAcquireLicenseForStoreIdAsync
- Result
- XStoreAcquireLicenseForDurablesAsync
- Result
- XStoreIsLicenseValid
- XStoreRegisterPackageLicenseLost
- XStoreUnregisterPackageLicenseLost
- XStoreCloseLicenseHandle
- XStoreCanAcquireLicenseForPackageAsync
- Result
- XStoreAcquireLicenseForPackageAsync
- Result
- XStoreQueryLicenseTokenAsync
- Result
- Structures
- Fonctions
- XPackage (contenu de l’API)
Voir aussi
Vue d’ensemble du commerceRéférence de l’API XStore
