Obtenir les informations produit des applications et des extensionsGet product info for apps and add-ons

Cet article montre comment utiliser les méthodes de la classe StoreContext dans l’espace de noms Windows. services. Store pour accéder aux informations relatives au magasin pour l’application actuelle ou l’un de ses modules complémentaires.This article demonstrates how to use methods of the StoreContext class in the Windows.Services.Store namespace to access Store-related info for the current app or one of its add-ons.

Pour obtenir un exemple d’application complète, consultez Exemple Windows Store.For a complete sample application, see the Store sample.

Notes

L’espace de noms Windows. services. Store a été introduit dans Windows 10, version 1607, et il ne peut être utilisé que dans les projets qui ciblent l' édition anniversaire windows 10 (10,0 ; Build 14393) ou une version ultérieure dans Visual Studio.The Windows.Services.Store namespace was introduced in Windows 10, version 1607, and it can only be used in projects that target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio. Si votre application cible une version antérieure de Windows 10, vous devez utiliser l’espace de noms Windows.ApplicationModel.Store à la place de l’espace de noms Windows.Services.Store.If your app targets an earlier version of Windows 10, you must use the Windows.ApplicationModel.Store namespace instead of the Windows.Services.Store namespace. Pour plus d’informations, consultez cet article.For more information, see this article.

PrérequisPrerequisites

Les conditions préalables de ces exemples sont les suivantes :These examples have the following prerequisites:

  • Projet Visual Studio pour une application plateforme Windows universelle (UWP) qui cible Windows 10 édition anniversaire (10,0 ; Build 14393) ou version ultérieure.A Visual Studio project for a Universal Windows Platform (UWP) app that targets Windows 10 Anniversary Edition (10.0; Build 14393) or a later release.
  • Vous avez créé une soumission d’application dans l’espace partenaires et cette application est publiée dans le Windows Store.You have created an app submission in Partner Center and this app is published in the Store. Vous pouvez éventuellement configurer l’application afin qu’elle ne soit pas détectable dans le magasin pendant que vous la Testez.You can optionally configure the app so it is not discoverable in the Store while you test it. Pour plus d’informations, consultez notre Guide de test.For more information, see our testing guidance.
  • Si vous souhaitez obtenir des informations sur le produit d’un module complémentaire pour l’application, vous devez également créer le module complémentaire dans l’espace partenaires.If you want to get product info for an add-on for the app, you must also create the add-on in Partner Center.

Le code de ces exemples respecte les présupposés suivants :The code in these examples assume:

  • Le code s’exécute dans le contexte d’une Page qui contient un ProgressRing nommé workingProgressRing et un TextBlock nommé textBlock.The code runs in the context of a Page that contains a ProgressRing named workingProgressRing and a TextBlock named textBlock. Ces objets sont utilisés pour respectivement indiquer qu’une opération asynchrone est en cours et afficher les messages de sortie.These objects are used to indicate that an asynchronous operation is occurring and to display output messages, respectively.
  • Le fichier de code contient une instruction using pour l’espace de noms Windows.Services.Store.The code file has a using statement for the Windows.Services.Store namespace.
  • Cette application mono-utilisateur ne s’exécute que dans le contexte de l’utilisateur qui l’a lancée.The app is a single-user app that runs only in the context of the user that launched the app. Pour plus d’informations, consultez Versions d’évaluation et achats in-app.For more information, see In-app purchases and trials.

Notes

Si vous disposez d’une application de bureau qui utilise le pont Desktop, vous devrez peut-être ajouter du code supplémentaire non présenté dans ces exemples pour configurer l’objet StoreContext .If you have a desktop application that uses the Desktop Bridge, you may need to add additional code not shown in these examples to configure the StoreContext object. Pour plus d’informations, voir Utilisation de la classe StoreContext dans une application de bureau qui utilise Desktop Bridge.For more information, see Using the StoreContext class in a desktop application that uses the Desktop Bridge.

Obtenir les informations de l’application en coursGet info for the current app

Pour obtenir des informations du Windows Store concernant l’application actuelle, utilisez la méthode GetStoreProductForCurrentAppAsync.To get Store product info about the current app, use the GetStoreProductForCurrentAppAsync method. Cette méthode asynchrone renvoie un objet StoreProduct que vous pouvez utiliser pour obtenir des informations telles que le prix.This is an asynchronous method that returns a StoreProduct object that you can use to get info such as the price.

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 des ID de magasin connus associés à l’application actuelleGet info for add-ons with known Store IDs that are associated with the current app

Pour obtenir les informations du produit du magasin pour les modules complémentaires associés à l’application actuelle et pour lesquels vous connaissez déjà les ID de magasin, utilisez la méthode GetStoreProductsAsync .To get Store product info for add-ons that are associated with the current app and for which you already know the Store IDs, use the GetStoreProductsAsync method. Cette méthode asynchrone renvoie un ensemble d’objets StoreProduct qui représentent chaque module complémentaire.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the add-ons. Outre les ID Windows Store, vous devez transmettre à cette méthode une liste de chaînes qui identifient les types de modules complémentaires.In addition to the Store IDs, you must pass a list of strings to this method that identify the types of the add-ons. Pour obtenir la liste des valeurs de chaîne prises en charge, consultez la propriété ProductKind.For a list of the supported string values, see the ProductKind property.

Notes

La méthode GetStoreProductsAsync retourne des informations sur les produits pour les modules complémentaires spécifiés qui sont associés à l’application, que les modules complémentaires soient actuellement disponibles pour l’achat ou non.The GetStoreProductsAsync method returns product info for the specified add-ons that are associated with the app, regardless of whether the add-ons are currently available for purchase. Pour récupérer des informations pour tous les modules complémentaires de l’application actuelle qui peuvent être achetés actuellement, utilisez la méthode GetAssociatedStoreProductsAsync comme décrit dans la section suivante à la place.To retrieve info for all the add-ons for the current app that can currently be purchased, use the GetAssociatedStoreProductsAsync method as described in the following section instead.

Cet exemple récupère des informations sur les modules complémentaires durables avec les ID de magasin spécifiés qui sont associés à l’application actuelle.This example retrieves info for durable add-ons with the specified Store IDs that are associated with the current app.

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 qui peuvent être achetés à partir de l’application actuelleGet info for add-ons that are available for purchase from the current app

Pour obtenir les informations du produit du magasin pour les modules complémentaires actuellement disponibles à l’achat à partir de l’application actuelle, utilisez la méthode GetAssociatedStoreProductsAsync .To get Store product info for the add-ons that are currently available for purchase from the current app, use the GetAssociatedStoreProductsAsync method. Cette méthode asynchrone renvoie un ensemble d’objets StoreProduct qui représentent chaque module complémentaire disponible.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the available add-ons. Vous devez transmettre à cette méthode une liste de chaînes qui identifient les types de modules complémentaires que vous souhaitez récupérer.You must pass a list of strings to this method that identify the types of add-ons you want to retrieve. Pour obtenir la liste des valeurs de chaîne prises en charge, consultez la propriété ProductKind.For a list of the supported string values, see the ProductKind property.

Notes

Si l’application a de nombreux modules complémentaires disponibles à l’achat, vous pouvez également utiliser la méthode GetAssociatedStoreProductsWithPagingAsync pour utiliser la pagination afin de retourner les résultats du module complémentaire.If the app has many add-ons that are available for purchase, you can alternatively use the GetAssociatedStoreProductsWithPagingAsync method to use paging to return the add-on results.

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 magasin et les modules complémentaires consommables gérés par le développeur qui peuvent être achetés à partir de l’application actuelle.The following example retrieves info for all durable add-ons, Store-managed consumable add-ons, and developer-managed consumable add-ons that are available for purchase from the current app.

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éeGet info for add-ons for the current app that the user has purchased

Pour obtenir les informations du produit du magasin pour les modules complémentaires que l’utilisateur actuel a achetés, utilisez la méthode GetUserCollectionAsync .To get Store product info for add-ons that the current user has purchased, use the GetUserCollectionAsync method. Il s’agit d’une méthode asynchrone qui retourne une collection d’objets StoreProduct qui représentent chacun des modules complémentaires.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the add-ons. Vous devez transmettre à cette méthode une liste de chaînes qui identifient les types de modules complémentaires que vous souhaitez récupérer.You must pass a list of strings to this method that identify the types of add-ons you want to retrieve. Pour obtenir la liste des valeurs de chaîne prises en charge, consultez la propriété ProductKind.For a list of the supported string values, see the ProductKind property.

Notes

Si l’application possède de nombreux modules complémentaires, vous pouvez également utiliser la méthode GetUserCollectionWithPagingAsync pour utiliser la pagination afin de retourner les résultats du module complémentaire.If the app has many add-ons, you can alternatively use the GetUserCollectionWithPagingAsync method to use paging to return the add-on results.

L’exemple suivant récupère des informations pour les modules complémentaires durables avec les ID de magasinspécifiés.The following example retrieves info for durable add-ons with the specified Store IDs.

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...
    }
}