Abrufen von Produktinformationen zu Apps und Add-OnsGet product info for apps and add-ons

In diesem Artikel wird veranschaulicht, wie die Methoden der storecontext -Klasse im Windows. Services. Store -Namespace verwendet werden, um auf speicherbezogene Informationen für die aktuelle APP oder eines ihrer Add-ons zuzugreifen.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.

Eine vollständige Beispielanwendung finden Sie im Store-Beispiel.For a complete sample application, see the Store sample.

Hinweis

Der Windows. Services. Store -Namespace wurde in Windows 10, Version 1607, eingeführt und kann nur in Projekten verwendet werden, die auf Windows 10 Anniversary Edition (10,0;) abzielen. Build 14393) oder eine spätere Version 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. Wenn Ihre App für eine frühere Version von Windows 10 geeignet ist, müssen Sie den Windows.ApplicationModel.Store-Namespace anstelle des Windows.Services.Store-Namespace verwenden.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. Weitere Informationen finden Sie in diesem Artikel.For more information, see this article.

VoraussetzungenPrerequisites

Für diese Beispiele gelten die folgenden Voraussetzungen:These examples have the following prerequisites:

  • Ein Visual Studio-Projekt für eine universelle Windows-Plattform-app (UWP), die auf Windows 10 Anniversary Edition abzielt (10,0; Build 14393) oder eine spätere Version.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.
  • Sie haben eine APP-Übermittlung im Partner Center erstellt, und diese APP wird im Store veröffentlicht.You have created an app submission in Partner Center and this app is published in the Store. Optional können Sie die APP so konfigurieren, dass Sie im Speicher nicht erkennbar ist, während Sie Sie testen.You can optionally configure the app so it is not discoverable in the Store while you test it. Weitere Informationen finden Sie in unserer Test Anleitung.For more information, see our testing guidance.
  • Wenn Sie Produktinformationen für ein Add-on für die APP erhalten möchten, müssen Sie das Add-on auch im Partner Center erstellen.If you want to get product info for an add-on for the app, you must also create the add-on in Partner Center.

Der Code in diesen Beispielen geht von Folgendem aus:The code in these examples assume:

  • Die Ausführung des Codes erfolgt im Kontext einer Seite, die einen ProgressRing mit dem Namen workingProgressRing und einen TextBlock mit dem Namen textBlock enthält.The code runs in the context of a Page that contains a ProgressRing named workingProgressRing and a TextBlock named textBlock. Diese Objekte werden verwendet, um anzugeben, dass ein asynchroner Vorgang ausgeführt wird, bzw. um Ausgabemeldungen anzuzeigen.These objects are used to indicate that an asynchronous operation is occurring and to display output messages, respectively.
  • Die Codedatei enthält eine using-Anweisung für den Namespace Windows.Services.Store.The code file has a using statement for the Windows.Services.Store namespace.
  • Die App ist eine Einzelbenutzer-App, die nur im Kontext des Benutzers ausgeführt wird, der die App gestartet hat.The app is a single-user app that runs only in the context of the user that launched the app. Weitere Informationen finden Sie unter In-App-Käufe und Testversionen.For more information, see In-app purchases and trials.

Hinweis

Wenn Sie über eine Desktop Anwendung verfügen, die die Desktop Bridgeverwendet, müssen Sie möglicherweise zusätzlichen Code hinzufügen, der in diesen Beispielen nicht angezeigt wird, um das storecontext -Objekt zu konfigurieren.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. Weitere Informationen finden Sie unter Verwenden der StoreContext-Klasse in einer Desktopanwendung, die die Desktop-Brücke verwendet.For more information, see Using the StoreContext class in a desktop application that uses the Desktop Bridge.

Abrufen von Informationen für die aktuelle AppGet info for the current app

Verwenden Sie zum Abrufen von Store-Produktinformationen zur aktuellen App die GetStoreProductForCurrentAppAsync-Methode.To get Store product info about the current app, use the GetStoreProductForCurrentAppAsync method. Dies ist eine asynchrone Methode, die ein StoreProduct-Objekt zurückgibt, das Sie verwenden können, um Informationen wie den Preis abzurufen.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}";
}

Erhalten Sie Informationen zu Add-ons mit bekannten Store-IDs, die der aktuellen App zugeordnet sind.Get info for add-ons with known Store IDs that are associated with the current app

Verwenden Sie die getstoreproductionasync -Methode, um Speicherprodukt Informationen für Add-ons abzurufen, die der aktuellen App zugeordnet sind und für die Sie bereits die Store-IDskennen.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. Dabei handelt es sich um eine asynchrone Methode, die eine Auflistung von storeproduct -Objekten zurückgibt, die die einzelnen Add-ons darstellen.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the add-ons. Zusätzlich zu den Store-IDs müssen Sie eine Liste mit Zeichenfolgen an diese Methode übergeben, welche die Typen der Add-Ons identifizieren.In addition to the Store IDs, you must pass a list of strings to this method that identify the types of the add-ons. Eine Liste der unterstützten Zeichenfolgenwerte finden Sie in der ProductKind-Eigenschaft.For a list of the supported string values, see the ProductKind property.

Hinweis

Die getstoreproductionasync -Methode gibt Produktinformationen für die angegebenen Add-ons zurück, die der APP zugeordnet sind, unabhängig davon, ob die Add-ons zurzeit für den Kauf verfügbar sind.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. Zum Abrufen von Informationen für alle Add-ons für die aktuelle APP, die derzeit erworben werden können, verwenden Sie stattdessen die getassociatedstoreproduczasync -Methode, wie im folgenden Abschnitt beschrieben.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.

In diesem Beispiel werden Informationen für permanente Add-ons mit den angegebenen Speicher-IDs abgerufen, die der aktuellen App zugeordnet sind.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...
    }
}

Hier erhalten Sie Informationen zu Add-ons, die über die aktuelle App erworben werden können.Get info for add-ons that are available for purchase from the current app

Verwenden Sie die getassociatedstoreproductionasync -Methode, um Informationen zum Speicherprodukt für die Add-ons zu erhalten, die zurzeit für den Einkauf in der aktuellen app verfügbar sind.To get Store product info for the add-ons that are currently available for purchase from the current app, use the GetAssociatedStoreProductsAsync method. Dabei handelt es sich um eine asynchrone Methode, die eine Auflistung von storeproduct -Objekten zurückgibt, die die einzelnen verfügbaren Add-ons darstellen.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the available add-ons. Sie müssen eine Liste mit Zeichenfolgen an diese Methode übergeben, welche die Typen von Add-Ons identifizieren, die Sie abrufen möchten.You must pass a list of strings to this method that identify the types of add-ons you want to retrieve. Eine Liste der unterstützten Zeichenfolgenwerte finden Sie in der ProductKind-Eigenschaft.For a list of the supported string values, see the ProductKind property.

Hinweis

Wenn die APP über viele Add-ons verfügt, die für den Kauf verfügbar sind, können Sie alternativ die getassociatedstoreproductwithpagingasync -Methode verwenden, um das Add-on-Ergebnis mithilfe von Paging zurückzugeben.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.

Im folgenden Beispiel werden Informationen für alle permanenten Add-ons, von Filialen verwaltete, nutzbare Add-ons und von Entwicklern verwaltete, nutzbare Add-ons abgerufen, die über die aktuelle App erworben werden können.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...
    }
}

Hier erhalten Sie Informationen zu Add-ons für die aktuelle APP, die der Benutzer gekauft hat.Get info for add-ons for the current app that the user has purchased

Verwenden Sie die getusercollectionasync -Methode, um Informationen zum Speicherprodukt für Add-ons, die der aktuelle Benutzer gekauft hat, zu erhalten.To get Store product info for add-ons that the current user has purchased, use the GetUserCollectionAsync method. Hierbei handelt es sich um eine asynchrone Methode, die eine Sammlung von StoreProduct-Objekten zurück gibt, die alle Add-Ons darstellen.This is an asynchronous method that returns a collection of StoreProduct objects that represent each of the add-ons. Sie müssen eine Liste mit Zeichenfolgen an diese Methode übergeben, welche die Typen von Add-Ons identifizieren, die Sie abrufen möchten.You must pass a list of strings to this method that identify the types of add-ons you want to retrieve. Eine Liste der unterstützten Zeichenfolgenwerte finden Sie in der ProductKind-Eigenschaft.For a list of the supported string values, see the ProductKind property.

Hinweis

Wenn die APP über viele Add-ons verfügt, können Sie alternativ die getusercollectionwithpagingasync -Methode verwenden, um das Add-on-Ergebnis mithilfe von Paging zurückzugeben.If the app has many add-ons, you can alternatively use the GetUserCollectionWithPagingAsync method to use paging to return the add-on results.

Im folgenden Beispiel werden Informationen für permanente Add-ons mit den angegebenen Speicher-IDsabgerufen.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...
    }
}