Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird veranschaulicht, wie Methoden der StoreContext-Klasse im Windows.Services.Store Namespace verwendet werden, um auf Store-bezogene Informationen für die aktuelle App oder eines der Add-Ons zuzugreifen.
Eine vollständige Beispielanwendung finden Sie im Store-Beispiel-.
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 abzielen (10.0; Build 14393) oder einer höheren Version in Visual Studio. Wenn Ihre App auf eine frühere Version von Windows 10 ausgerichtet ist, müssen Sie den Windows.ApplicationModel.Store Namespace anstelle des Windows.Services.Store Namespace verwenden. Weitere Informationen finden Sie in diesem Artikel.
Voraussetzungen
Diese Beispiele haben die folgenden Voraussetzungen:
- Ein Visual Studio-Projekt für eine UWP-App (Universelle Windows-Plattform), die auf Windows 10 Anniversary Edition ausgerichtet ist (10.0; Build 14393) oder einer höheren Version.
- Sie haben eine App-Einreichung im Partner Center erstellt, und diese App ist im Store veröffentlicht. Sie können die App optional so konfigurieren, dass sie beim Testen nicht im Store auffindbar ist. Weitere Informationen finden Sie in unserem Testleitfaden.
- Wenn Sie Produktinformationen für eine Erweiterung der App abrufen möchten, müssen Sie auch die Erweiterung im Partner Centererstellen.
Der Code in diesen Beispielen geht davon aus:
- Der Code wird im Kontext einer Page ausgeführt, die einen ProgressRing mit dem Namen
workingProgressRing
und einen TextBlock mit dem NamentextBlock
enthält. Diese Objekte werden verwendet, um anzugeben, dass ein asynchroner Vorgang stattfindet, beziehungsweise um Ausgabemeldungen anzuzeigen. - Die Codedatei enthält eine mit der-Anweisung für den Windows.Services.Store-Namespace.
- Die App ist eine Einzelbenutzer-App, die nur im Kontext des Benutzers ausgeführt wird, der die App gestartet hat. Weitere Informationen finden Sie unter dem Abschnitt In-App-Käufe und Testversionen.
Hinweis
Wenn Sie über eine Desktopanwendung verfügen, die die Desktop-Brücke verwendet, müssen Sie möglicherweise zusätzlichen Code hinzufügen, der in diesen Beispielen nicht gezeigt wird, um das StoreContext-Objekt zu konfigurieren. Weitere Informationen finden Sie unter Verwenden der StoreContext-Klasse in einer Desktopanwendung, die die Desktop-Brückeverwendet.
Abrufen von Informationen für die aktuelle App
Verwenden Sie zum Abrufen von Store-Produktinformationen zur aktuellen App die GetStoreProductForCurrentAppAsync-Methode . Dies ist eine asynchrone Methode, die ein StoreProduct-Objekt zurückgibt, mit dem Sie Informationen wie den Preis abrufen können.
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}";
}
Informationen für Add-Ons mit bekannten Store-IDs abrufen, die der aktuellen App zugeordnet sind.
Verwenden Sie die GetStoreProductsAsync-Methode, um Store-Produktinformationen für Add-Ons abzurufen, die der aktuellen App zugeordnet sind und für die Sie bereits die Store-IDs kennen. Dies ist eine asynchrone Methode, die eine Auflistung von StoreProduct-Objekten zurückgibt, die die einzelnen Add-Ons darstellen. Zusätzlich zu den Store-IDs müssen Sie eine Liste der Zeichenfolgen an diese Methode übergeben, die die Typen der Add-Ons identifizieren. Eine Liste der unterstützten Zeichenfolgenwerte finden Sie in der eigenschaft ProductKind.
Hinweis
Die GetStoreProductsAsync-Methode gibt Produktinformationen für die angegebenen Add-Ons zurück, die der App zugeordnet sind, unabhängig davon, ob die Add-Ons derzeit zum Kauf verfügbar sind. Um Informationen für alle Add-Ons für die aktuelle App abzurufen, die derzeit erworben werden kann, verwenden Sie stattdessen die GetAssociatedStoreProductsAsync Methode, wie im folgenden Abschnitt beschrieben.
In diesem Beispiel werden Informationen für dauerhafte Add-Ons mit den angegebenen Store-IDs abgerufen, die der aktuellen App zugeordnet sind.
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...
}
}
Abrufen von Informationen zu Add-Ons, die für den Kauf über die aktuelle App verfügbar sind
Verwenden Sie die Methode GetAssociatedStoreProductsAsync, um Store-Produktinformationen für die Add-Ons abzurufen, die derzeit in der aktuellen App zum Kauf verfügbar sind. Dies ist eine asynchrone Methode, die eine Auflistung von StoreProduct-Objekten zurückgibt, die jedes der verfügbaren Add-Ons darstellen. Sie müssen eine Liste von Zeichenfolgen an diese Methode übergeben, die die Typen von Add-Ons identifizieren, die Sie abrufen möchten. Eine Liste der unterstützten Zeichenfolgenwerte finden Sie in der eigenschaft ProductKind.
Hinweis
Wenn die App über viele Add-Ons verfügt, die zum Kauf verfügbar sind, können Sie alternativ die GetAssociatedStoreProductsWithPagingAsync--Methode verwenden, um paging zum Zurückgeben der Add-On-Ergebnisse zu verwenden.
Im folgenden Beispiel werden Informationen für alle dauerhaften Add-Ons, vom Store verwalteten Verbrauchs-Add-Ons und vom Entwickler verwaltete Verbrauchs-Add-Ons abgerufen, die für den Kauf über die aktuelle App verfügbar sind.
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...
}
}
Erhalte Informationen zu Add-Ons der aktuellen App, die der Benutzer erworben hat
Um Store-Produktinformationen für Add-Ons abzurufen, die der aktuelle Benutzer erworben hat, verwenden Sie die GetUserCollectionAsync--Methode. Dies ist eine asynchrone Methode, die eine Auflistung von StoreProduct-Objekten zurückgibt, die die einzelnen Add-Ons darstellen. Sie müssen eine Liste von Zeichenfolgen an diese Methode übergeben, die die Typen von Add-Ons identifizieren, die Sie abrufen möchten. Eine Liste der unterstützten Zeichenfolgenwerte finden Sie in der eigenschaft ProductKind.
Hinweis
Wenn die App viele Add-ons hat, können Sie alternativ die Methode GetUserCollectionWithPagingAsync verwenden, um die Ergebnisse der Add-ons mit Paging zurückzugeben.
Im folgenden Beispiel werden Informationen für persistente Add-Ons mit den angegebenen Store-IDsabgerufen.
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...
}
}