Ottenere info sul prodotto per le app e i componenti aggiuntiviGet product info for apps and add-ons

Questo articolo illustra come usare i metodi della classe StoreContext nello spazio dei nomi Windows. Services. Store per accedere alle informazioni relative all'archivio per l'app corrente o uno dei relativi componenti aggiuntivi.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.

Per un'applicazione di esempio completa, vedi Esempio dello Store.For a complete sample application, see the Store sample.

Nota

Lo spazio dei nomi Windows. Services. Store è stato introdotto in Windows 10 versione 1607 e può essere usato solo nei progetti destinati a Windows 10 Anniversary Edition (10,0; Build 14393) o versione successiva in 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. Se l'app è progettata per una versione precedente di Windows 10, devi usare lo spazio dei nomi Windows.ApplicationModel.Store anziché lo spazio dei nomi 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. Per altre informazioni, vedi questo articolo.For more information, see this article.

PrerequisitiPrerequisites

Per questi esempi sono previsti i prerequisiti seguenti:These examples have the following prerequisites:

  • Un progetto di Visual Studio per un'app piattaforma UWP (Universal Windows Platform) (UWP) destinata a Windows 10 Anniversary Edition (10,0; Build 14393) o versione successiva.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.
  • È stato creato un invio di app nel centro per i partner e questa app è pubblicata nello Store.You have created an app submission in Partner Center and this app is published in the Store. Facoltativamente, è possibile configurare l'app in modo che non sia individuabile nell'archivio mentre viene testato.You can optionally configure the app so it is not discoverable in the Store while you test it. Per ulteriori informazioni, vedere le linee guidaper i test.For more information, see our testing guidance.
  • Se si desidera ottenere informazioni sul prodotto per un componente aggiuntivo per l'app, è necessario creare anche il componente aggiuntivo in centroper i partner.If you want to get product info for an add-on for the app, you must also create the add-on in Partner Center.

Il codice in questi esempi presuppone quanto segue:The code in these examples assume:

  • Il codice viene eseguito nel contesto di una classe Page che contiene un ProgressRing denominato workingProgressRing e un TextBlock denominato textBlock.The code runs in the context of a Page that contains a ProgressRing named workingProgressRing and a TextBlock named textBlock. Questi oggetti vengono usati per indicare che è in corso un'operazione asincrona e per visualizzare i messaggi di output, rispettivamente.These objects are used to indicate that an asynchronous operation is occurring and to display output messages, respectively.
  • Il file di codice include un'istruzione using per lo spazio dei nomi Windows.Services.Store.The code file has a using statement for the Windows.Services.Store namespace.
  • L'app è un'app per un singolo utente che viene eseguita solo nel contesto dell'utente che ha avviato l'app.The app is a single-user app that runs only in the context of the user that launched the app. Per altre informazioni, vedi Acquisti in-app e versioni di prova.For more information, see In-app purchases and trials.

Nota

Se si dispone di un'applicazione desktop che usa Desktop Bridge, potrebbe essere necessario aggiungere altro codice non illustrato in questi esempi per configurare l'oggetto 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. Per altre informazioni, vedi Uso della classe StoreContext in un'applicazione desktop che usa il bridge desktop.For more information, see Using the StoreContext class in a desktop application that uses the Desktop Bridge.

Ottenere informazioni per l'app correnteGet info for the current app

Per ottenere le informazioni correlate allo Store per l'app corrente, usa il metodo GetStoreProductForCurrentAppAsync.To get Store product info about the current app, use the GetStoreProductForCurrentAppAsync method. Questo è un metodo asincrono che restituisce un oggetto StoreProduct che puoi usare per ottenere info come il prezzo.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}";
}

Ottenere informazioni per i componenti aggiuntivi con ID di archivio noti associati all'app correnteGet info for add-ons with known Store IDs that are associated with the current app

Per ottenere informazioni sul prodotto di archiviazione per i componenti aggiuntivi associati all'app corrente e per cui si conoscono già gli ID dello Store, usare il metodo 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. Questo è un metodo asincrono che restituisce una raccolta di oggetti StoreProduct, che rappresentano ognuno dei componenti aggiuntivi.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the add-ons. Oltre agli ID dello Store, devi passare a questo metodo un elenco di stringhe che identificano i tipi dei componenti aggiuntivi.In addition to the Store IDs, you must pass a list of strings to this method that identify the types of the add-ons. Per un elenco dei valori stringa supportati, vedi la proprietà ProductKind.For a list of the supported string values, see the ProductKind property.

Nota

Il metodo GetStoreProductsAsync restituisce informazioni sul prodotto per i componenti aggiuntivi specificati associati all'app, indipendentemente dal fatto che i componenti aggiuntivi siano attualmente disponibili per l'acquisto.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. Per recuperare informazioni per tutti i componenti aggiuntivi per l'app corrente che è attualmente possibile acquistare, usare il metodo GetAssociatedStoreProductsAsync , come descritto nella sezione seguente .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.

Questo esempio recupera informazioni per i componenti aggiuntivi durevoli con gli ID di archivio specificati associati all'app corrente.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...
    }
}

Ottenere informazioni per i componenti aggiuntivi disponibili per l'acquisto dall'app correnteGet info for add-ons that are available for purchase from the current app

Per ottenere informazioni sul prodotto di archiviazione per i componenti aggiuntivi attualmente disponibili per l'acquisto dall'app corrente, usare il metodo GetAssociatedStoreProductsAsync .To get Store product info for the add-ons that are currently available for purchase from the current app, use the GetAssociatedStoreProductsAsync method. Questo è un metodo asincrono che restituisce una raccolta di oggetti StoreProduct, che rappresentano ognuno dei componenti aggiuntivi disponibili.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the available add-ons. Devi passare a questo metodo un elenco di stringhe che identificano i tipi dei componenti aggiuntivi che vuoi recuperare.You must pass a list of strings to this method that identify the types of add-ons you want to retrieve. Per un elenco dei valori stringa supportati, vedi la proprietà ProductKind.For a list of the supported string values, see the ProductKind property.

Nota

Se l'app dispone di molti componenti aggiuntivi disponibili per l'acquisto, è possibile usare il metodo GetAssociatedStoreProductsWithPagingAsync per usare il paging per restituire i risultati del componente aggiuntivo.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.

Nell'esempio seguente vengono recuperate informazioni per tutti i componenti aggiuntivi durevoli, i componenti aggiuntivi utilizzabili gestiti da Store e i componenti aggiuntivi utilizzabili gestiti dallo sviluppatore che sono disponibili per l'acquisto dall'app corrente.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...
    }
}

Ottenere informazioni per i componenti aggiuntivi per l'app corrente acquistata dall'utenteGet info for add-ons for the current app that the user has purchased

Per ottenere informazioni sul prodotto dell'archivio per i componenti aggiuntivi acquistati dall'utente corrente, utilizzare il metodo GetUserCollectionAsync .To get Store product info for add-ons that the current user has purchased, use the GetUserCollectionAsync method. Si tratta di un metodo asincrono che restituisce una raccolta di oggetti StoreProduct che rappresentano ognuno dei componenti aggiuntivi.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the add-ons. Devi passare a questo metodo un elenco di stringhe che identificano i tipi dei componenti aggiuntivi che vuoi recuperare.You must pass a list of strings to this method that identify the types of add-ons you want to retrieve. Per un elenco dei valori stringa supportati, vedi la proprietà ProductKind.For a list of the supported string values, see the ProductKind property.

Nota

Se l'app include molti componenti aggiuntivi, in alternativa è possibile usare il metodo GetUserCollectionWithPagingAsync per usare il paging per restituire i risultati del componente aggiuntivo.If the app has many add-ons, you can alternatively use the GetUserCollectionWithPagingAsync method to use paging to return the add-on results.

Nell'esempio seguente vengono recuperate informazioni per i componenti aggiuntivi durevoli con gli ID di archiviospecificati.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...
    }
}