Partager via


Obtenir des informations sur le produit pour des applications et des extensions

Cet article montre comment utiliser des méthodes de la classe StoreContext dans l’espace de noms Windows.Services.Store pour accéder aux informations relatives au Windows Store pour l’application actuelle ou l’une de ses extensions.

Pour obtenir un exemple complet d’application, consultez l’exemple Store.

Remarque

L’espace de noms Windows.Services.Store a été introduit dans la version 1607 de Windows 10 et ne peut être utilisé que dans les projets ciblant Windows 10 édition anniversaire (10.0 Build 14393) ou une version ultérieure dans Visual Studio. Si votre application cible une version antérieure de Windows 10, vous devez utiliser l’espace de noms Windows.ApplicationModel.Store plutôt que Windows.Services.Store. Pour plus d’informations, consultez cet article.

Prérequis

Ces exemples présentent les conditions préalables suivantes :

  • Un projet Visual Studio pour une application de la Plateforme Windows universelle (UWP) qui cible Windows 10 édition anniversaire (10.0 Build 14393) ou une version ultérieure.
  • Vous avez créé une soumission d’application dans l’Espace partenaires et cette application est publiée dans le Store. Vous pouvez configurer de manière alternative l’application afin qu’elle ne soit pas détectable dans le Store pendant que vous la testez. Pour plus d’informations, consultez nos conseils de test.
  • Si vous souhaitez obtenir des informations sur le produit pour un module complémentaire pour l’application, vous devez également créer le module complémentaire dans l’Espace partenaires.

Le code de ces exemples suppose :

  • Le code s’exécute dans le contexte d’une page contenant un progressRing nommé workingProgressRing et un TextBlock nommé textBlock. Ces objets sont utilisés respectivement pour indiquer qu’une opération asynchrone se produit et afficher les messages de sortie.
  • Le fichier de code contient une instruction using pour l’espace de noms Windows.Services.Store.
  • Cette application mono-utilisateur ne s’exécute que dans le contexte de l’utilisateur qui l’a lancée. Pour plus d’informations, consultez Achats in-app et versions d’évaluation.

Remarque

Si vous disposez d’une application de bureau qui utilise le Pont du bureau, vous devrez peut-être ajouter du code supplémentaire non affiché dans ces exemples pour configurer l’objet StoreContext. Pour plus d’informations, consultez Utilisation de la classe StoreContext dans une application bureautique qui utilise le Pont du bureau.

Obtenir des informations pour l’application actuelle

Pour obtenir des informations sur le produit store sur l’application actuelle, utilisez la méthode GetStoreProductForCurrentAppAsync . Il s’agit d’une méthode asynchrone qui retourne un objet StoreProduct que vous pouvez utiliser pour obtenir des informations telles que le prix.

private StoreContext context = null;

public async void GetAppInfo()
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    // Get app store product details. Because this might take several moments,   
    // display a ProgressRing during the operation.
    workingProgressRing.IsActive = true;
    StoreProductResult queryResult = await context.GetStoreProductForCurrentAppAsync();
    workingProgressRing.IsActive = false;

    if (queryResult.Product == null)
    {
        // The Store catalog returned an unexpected result.
        textBlock.Text = "Something went wrong, and the product was not returned.";

        // Show additional error info if it is available.
        if (queryResult.ExtendedError != null)
        {
            textBlock.Text += $"\nExtendedError: {queryResult.ExtendedError.Message}";
        }

        return;
    }

    // Display the price of the app.
    textBlock.Text = $"The price of this app is: {queryResult.Product.Price.FormattedBasePrice}";
}

Obtenir des informations sur les modules complémentaires avec les ID du Windows Store connus associés à l’application actuelle

Pour obtenir les informations de produit du Windows Store pour les modules complémentaires associés à l’application actuelle et pour lesquelles vous connaissez déjà les ID du Windows Store, utilisez la méthode GetStoreProductsAsync . Il s’agit d’une méthode asynchrone qui retourne une collection d’objets StoreProduct qui représentent chacun des modules complémentaires. En plus des ID store, vous devez transmettre une liste de chaînes à cette méthode qui identifie les types des modules complémentaires. Pour obtenir la liste des valeurs de chaîne prises en charge, consultez la propriété ProductKind .

Remarque

La méthode GetStoreProductsAsync retourne les informations de produit pour les modules complémentaires spécifiés associés à l’application, que les modules complémentaires soient actuellement disponibles pour l’achat. Pour récupérer des informations pour tous les modules complémentaires de l’application actuelle qui peuvent actuellement être achetées, utilisez la méthode GetAssociatedStoreProductsAsync, comme décrit dans la section suivante à la place.

Cet exemple récupère des informations pour les modules complémentaires durables avec les ID store spécifiés associés à l’application actuelle.

private StoreContext context = null;

public async void GetProductInfo()
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    // Specify the kinds of add-ons to retrieve.
    string[] productKinds = { "Durable" };
    List<String> filterList = new List<string>(productKinds);

    // Specify the Store IDs of the products to retrieve.
    string[] storeIds = new string[] { "9NBLGGH4TNMP", "9NBLGGH4TNMN" };

    workingProgressRing.IsActive = true;
    StoreProductQueryResult queryResult =
        await context.GetStoreProductsAsync(filterList, storeIds);
    workingProgressRing.IsActive = false;

    if (queryResult.ExtendedError != null)
    {
        // The user may be offline or there might be some other server failure.
        textBlock.Text = $"ExtendedError: {queryResult.ExtendedError.Message}";
        return;
    }

    foreach (KeyValuePair<string, StoreProduct> item in queryResult.Products)
    {
        // Access the Store info for the product.
        StoreProduct product = item.Value;

        // Use members of the product object to access info for the product...
    }
}

Obtenir des informations sur les modules complémentaires disponibles pour l’achat à partir de l’application actuelle

Pour obtenir des informations sur le produit store pour les modules complémentaires actuellement disponibles pour l’achat à partir de l’application actuelle, utilisez la méthode GetAssociatedStoreProductsAsync . Il s’agit d’une méthode asynchrone qui retourne une collection d’objets StoreProduct qui représentent chacun des modules complémentaires disponibles. Vous devez transmettre une liste de chaînes à cette méthode qui identifie les types de modules complémentaires que vous souhaitez récupérer. Pour obtenir la liste des valeurs de chaîne prises en charge, consultez la propriété ProductKind .

Remarque

Si l’application possède de nombreux modules complémentaires disponibles pour l’achat, vous pouvez également utiliser la méthode GetAssociatedStoreProductsWithPagingAsync pour utiliser la pagination pour retourner les résultats du module complémentaire.

L’exemple suivant récupère des informations pour tous les modules complémentaires durables, les modules complémentaires consommables gérés par le Store et les modules complémentaires consommables gérés par les développeurs disponibles pour l’achat à partir de l’application actuelle.

private StoreContext context = null;

public async void GetAddOnInfo()
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    // Specify the kinds of add-ons to retrieve.
    string[] productKinds = { "Durable", "Consumable", "UnmanagedConsumable" };
    List<String> filterList = new List<string>(productKinds);

    workingProgressRing.IsActive = true;
    StoreProductQueryResult queryResult = await context.GetAssociatedStoreProductsAsync(filterList);
    workingProgressRing.IsActive = false;

    if (queryResult.ExtendedError != null)
    {
        // The user may be offline or there might be some other server failure.
        textBlock.Text = $"ExtendedError: {queryResult.ExtendedError.Message}";
        return;
    }

    foreach (KeyValuePair<string, StoreProduct> item in queryResult.Products)
    {
        // Access the Store product info for the add-on.
        StoreProduct product = item.Value;

        // Use members of the product object to access listing info for the add-on...
    }
}

Obtenir des informations sur les modules complémentaires pour l’application actuelle que l’utilisateur a achetée

Pour obtenir des informations sur le produit store pour les modules complémentaires que l’utilisateur actuel a achetés, utilisez la méthode GetUserCollectionAsync . Il s’agit d’une méthode asynchrone qui retourne une collection d’objets StoreProduct qui représentent chacun des modules complémentaires. Vous devez transmettre une liste de chaînes à cette méthode qui identifie les types de modules complémentaires que vous souhaitez récupérer. Pour obtenir la liste des valeurs de chaîne prises en charge, consultez la propriété ProductKind .

Remarque

Si l’application a de nombreux modules complémentaires, vous pouvez également utiliser la méthode GetUserCollectionWithPagingAsync pour utiliser la pagination pour retourner les résultats du module complémentaire.

L’exemple suivant récupère des informations pour les modules complémentaires durables avec les ID store spécifiés.

private StoreContext context = null;

public async void GetUserCollection()
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    // Specify the kinds of add-ons to retrieve.
    string[] productKinds = { "Durable" };
    List<String> filterList = new List<string>(productKinds);

    workingProgressRing.IsActive = true;
    StoreProductQueryResult queryResult = await context.GetUserCollectionAsync(filterList);
    workingProgressRing.IsActive = false;

    if (queryResult.ExtendedError != null)
    {
        // The user may be offline or there might be some other server failure.
        textBlock.Text = $"ExtendedError: {queryResult.ExtendedError.Message}";
        return;
    }

    foreach (KeyValuePair<string, StoreProduct> item in queryResult.Products)
    {
        StoreProduct product = item.Value;

        // Use members of the product object to access info for the product...
    }
}