In-App-Käufe und TestversionenIn-app purchases and trials

Das Windows SDK enthält APIs, mit denen Sie die folgenden Features implementieren können, um mit Ihrer UWP-App (Universelle Windows-Plattform) mehr Geld zu verdienen:The Windows SDK provides APIs you can use to implement the following features to make more money from your Universal Windows Platform (UWP) app:

  • In-App-Käufe  Unabhängig davon, ob Ihre App kostenlos oder kostenpflichtig ist, können Sie Inhalte oder neue App-Funktionen (wie das Freischalten des nächsten Levels eines Spiels) direkt in der App verkaufen.In-app purchases  Whether your app is free or not, you can sell content or new app functionality (such as unlocking the next level of a game) from right within the app.

  • Testversion Funktionalität  Wenn Sie Konfigurieren Ihrer app als eine kostenlose Testversion im Partner Center, können Sie Ihre Kunden die vollständige Version Ihrer App zu erwerben, durch ausschließen oder einige beschränken verleiten Features der Testphase.Trial functionality  If you configure your app as a free trial in Partner Center, you can entice your customers to purchase the full version of your app by excluding or limiting some features during the trial period. Außerdem können Sie Features wie Banner oder Wasserzeichen aktivieren, die nur in der Testversion angezeigt werden, bevor ein Kunde Ihre App kauft.You can also enable features, such as banners or watermarks, that are shown only during the trial, before a customer buys your app.

Dieser Artikel enthält eine Übersicht darüber, wie In-App-Käufe und Testversionen in UWP-Apps funktionieren.This article provides an overview of how in-app purchases and trials work in UWP apps.

Auswahl des zu verwendenden NamespaceChoose which namespace to use

Je nachdem, für welche Version von Windows 10 Ihre App ausgelegt ist, können Sie mithilfe zweier verschiedener Namespaces Ihren UWP-Apps In-App-Käufe und Testversionen hinzufügen.There are two different namespaces you can use to add in-app purchases and trial functionality to your UWP apps, depending on which version of Windows 10 your apps target. Obwohl die APIs in diesen Namespaces den gleichen Ziele dienen, sind sie unterschiedlich gestaltet, und der Code ist zwischen den beiden APIs nicht kompatibel.Although the APIs in these namespaces serve the same goals, they are designed quite differently, and code is not compatible between the two APIs.

Wichtig

Der The Windows.ApplicationModel.Store-Namespace wird nicht mehr mit neuen Funktionen aktualisiert, daher wird empfohlen, dass Sie stattdessen den Windows.Services.Store-Namespace falls möglich für Ihre App verwenden.The Windows.ApplicationModel.Store namespace is no longer being updated with new features, and we recommend that you use the Windows.Services.Store namespace instead if possible for your app. Die Windows.ApplicationModel.Store Namespace wird nicht unterstützt, in der Windows-desktop-Anwendungen, mit denen die Desktop-Brücke oder in apps oder Spiele, die im Partner Center (für einen Sandkasten für die Entwicklung zu verwenden Beispielsweise ist dies der Fall für beliebige Spiele, die Xbox Live integriert).The Windows.ApplicationModel.Store namespace is not supported in Windows desktop applications that use the Desktop Bridge or in apps or games that use a development sandbox in Partner Center (for example, this is the case for any game that integrates with Xbox Live).

Grundlegende KonzepteBasic concepts

Jedes im Store angebotene Element wird im Allgemeinen als Produkt bezeichnet.Every item that is offered in the Store is generally called a product. Die meisten Entwickler arbeiten nur mit den folgenden Arten von Produkten: Apps und Add-Ons.Most developers only work with the following types of products: apps and add-ons.

Ein Add-On ist ein Produkt oder Feature, das Sie Ihren Kunden im Kontext Ihrer App zur Verfügung stellen: z. B. in einer App oder einem Spiel zu verwendende Währung, neue Karten oder Waffen für ein Spiel, die Möglichkeit zur Verwendung der App ohne Werbung oder digitale Inhalte wie Musik oder Videos für Apps, die diese Art von Inhalten anbieten können.An add-on is a product or feature that you make available to your customers in the context of your app: for example, currency to be used in an app or game, new maps or weapons for a game, the ability to use your app without ads, or digital content such as music or videos for apps that have the ability to offer that type of content. Jede App und jedes Add-On verfügt über eine zugehörige Lizenz, die angibt, ob der Benutzer zur Verwendung dieser App oder des Add-Ons berechtigt ist.Every app and add-on has an associated license that indicates whether the user is entitled to use the app or add-on. Wenn der Benutzer berechtigt ist, die App bzw. das Add-On als Testversion zu verwenden, enthält die Lizenz auch zusätzliche Informationen zur Testversion.If the user is entitled to use the app or add-on as a trial, the license also provides additional info about the trial.

Um ein Add-on für Kunden in Ihrer app zu bieten, müssen Sie definieren Sie das Add-on für Ihre app im Partner Center , damit sie den Store kennt.To offer an add-on to customers in your app, you must define the add-on for your app in Partner Center so the Store knows about it. Anschließend kann das Add-On mithilfe der APIs im Windows.Services.Store-Namespace oder im Windows.ApplicationModel.Store-Namespace den Kunden zum Erwerb als In-App-Kauf angeboten werden.Then, your app can use APIs in the Windows.Services.Store or Windows.ApplicationModel.Store namespace to offer the add-on for sale to the user as an in-app purchase.

Für UWP-Apps können die folgenden Arten von Add-Ons angeboten werden.UWP apps can offer the following types of add-ons.

Add-On-TypAdd-on type BeschreibungDescription
GebrauchsgutDurable Ein Add-on, das für die Lebensdauer, die Sie beibehalten Geben Sie im Partner Center.An add-on that persists for the lifetime that you specify in Partner Center.

Standardmäßig laufen Gebrauchsgut-Add-Ons nie ab, in diesem Fall können sie nur einmal gekauft werden.By default, durable add-ons never expire, in which case they can only be purchased once. Wenn Sie eine bestimmte Dauer für das Add-On angeben, kann der Benutzer das Add-On erneut kaufen, nachdem es abgelaufen ist.If you specify a particular duration for the add-on, the user can repurchase the add-on after it expires.

Von Entwicklern verwaltetes Endverbraucher-Add-OnDeveloper-managed consumable Ein Add-On, das erworben, verwendet (konsumiert) und anschließend erneut gekauft werden kann.An add-on that can be purchased, used, and then purchased again after it is consumed. Sie sind dafür verantwortlich, das Guthaben des Benutzers an Elementen, die das Add-On darstellen, nachzuverfolgen.You are responsible for keeping track of the user's balance of items that the add-on represents.

Wenn der Benutzer Elemente verwendet, die mit dem Add-On verknüpft sind, sind Sie dafür verantwortlich, das Guthaben des Benutzers zu verwalten und den Kauf des Add-Ons als erfüllt an den Store zu melden, nachdem der Benutzer alle Elemente verwendet hat.When the user consumes any items that are associated with the add-on, you are responsible for maintaining the user's balance and for reporting the purchase of the add-on as fulfilled to the Store after the user has consumed all the items. Der Benutzer kann das Add-On erst dann erneut kaufen, nachdem Ihre App den vorherigen Kauf des Add-Ons als erfüllt gemeldet hat.The user cannot purchase the add-on again until your app has reported the previous add-on purchase as fulfilled.

Wenn beispielsweise das Add-On 100 Münzen in einem Spiel darstellt und der Benutzer 10 Münzen nutzt, muss die App oder der Dienst den neuen Restbetrag von 90 Münzen für den Benutzer verwalten.For example, if your add-on represents 100 coins in a game and the user consumes 10 coins, your app or service must maintain the new remaining balance of 90 coins for the user. Nachdem der Benutzer alle 100 Münzen genutzt hat, muss die App das Add-On als erfüllt melden, und danach kann der Benutzer das Add-On für 100 Münzen erneut kaufen.After the user has consumed all 100 coins, your app must report the add-on as fulfilled, and then the user can purchase the 100 coin add-on again.

Vom Store verwaltetes Endverbraucher-Add-OnStore-managed consumable Ein Add-On, das gekauft, verwendet und jederzeit erneut gekauft werden kann.An add-on that can be purchased, used, and purchased again at any time. Der Store verfolgt das Guthaben des Benutzers an Elementen, die das Add-On darstellen.The Store keeps track of the user's balance of items that the add-on represents.

Wenn der Benutzer Elemente verwendet, die mit dem Add-On verknüpft sind, sind Sie dafür verantwortlich, diese Elemente als erfüllt an den Store zu melden, und der Store aktualisiert das Konto des Benutzers.When the user consumes any items that are associated with the add-on, you are responsible for reporting those items as fulfilled to the Store, and the Store updates the user's balance. Der Benutzer kann das Add-On beliebig oft kaufen (er muss die Elemente nicht zuerst verwenden).The user can purchase the add-on as many times as they want (they do not need to consume the items first). Ihre App kann das aktuelle Guthaben für den Benutzer jederzeit abfragen.Your app can query for the current balance for the user at any time.

Wenn das Add-On beispielsweise eine anfängliche Menge von 100 Münzen in einem Spiel darstellt und der Benutzer 50 Münzen nutzt, meldet die App dem Store, dass 50 Einheiten des Add-Ons verwendet wurden, und der Store aktualisiert den Restbetrag.For example, if your add-on represents an initial quantity of 100 coins in a game and the user consumes 50 coins, your app reports to the Store that 50 units of the add-on were fulfilled, and the Store updates the remaining balance. Wenn der Benutzer dann Ihr Add-on erneut kauft, um 100 weitere Münzen zu erhalten, hat er jetzt 150 Münzen insgesamt.If the user then repurchases your add-on to acquire 100 more coins, they will now have 150 coins total.

Hinweis  Um vom Store verwaltete Endverbraucher-Add-Ons verwenden zu können, muss Ihre App für Windows 10 Anniversary Edition (10.0; Build 14393) oder höher in Visual Studio ausgerichtet sein. Zudem muss der Windows.Services.Store-Namespace anstatt von Windows.ApplicationModel.Store-Namespace verwendet werden.Note  To use Store-managed consumables, your app must target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio, and it must use the Windows.Services.Store namespace instead of the Windows.ApplicationModel.Store namespace.

AbonnementSubscription Ein dauerhaftes Add-On, das dem Kunden in regelmäßigen Abständen in Rechnung gestellt wird, damit das Add-On weiterhin verwendet werden kann.A durable add-on where the customer continues to be charged at recurring intervals in order to keep using the add-on. Der Kunde kann das Abonnement jederzeit kündigen, um weitere Gebühren zu vermeiden.The customer can cancel the subscription at any time to avoid further charges.

Hinweis  Um Abonnement-Add-Ons verwenden zu können, muss Ihre App in Visual Studio für Windows 10 Anniversary Edition (10.0; Build 14393) oder höher entwickelt worden sein. Zudem muss der Namespace Windows.Services.Store statt dem Namespace Windows.ApplicationModel.Store verwendet werden.Note  To use subscription add-ons, your app must target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio, and it must use the Windows.Services.Store namespace instead of the Windows.ApplicationModel.Store namespace.

Hinweis

Andere Arten von Add-Ons wie dauerhafte Add-Ons mit Paketen (auch als herunterladbare Inhalte oder DLC bekannt) stehen nur einer eingeschränkten Gruppe von Entwicklern zur Verfügung und werden in dieser Dokumentation nicht behandelt.Other types of add-ons, such as durable add-ons with packages (also known as downloadable content or DLC) are only available to a restricted set of developers, and are not covered in this documentation.

In-App-Käufe und Testversionen mit dem Windows.Services.Store-NamespaceIn-app purchases and trials using the Windows.Services.Store namespace

Dieser Abschnitt enthält eine Übersicht über wichtige Aufgaben und Konzepte für den Windows.Services.Store-Namespace.This section provides an overview of important tasks and concepts for the Windows.Services.Store namespace. Dieser Namespace ist nur für Apps für Windows 10 Anniversary Edition (10.0; Build 14393) oder einer neueren Version in Visual Studio verfügbar (dies entspricht Windows 10, Version 1607).This namespace is available only to apps that target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio (this corresponds to Windows 10, version 1607). Es wird empfohlen, den Windows.Services.Store-Namespace anstelle des Windows.ApplicationModel.Store-Namespace zu verwenden.We recommend that apps use the Windows.Services.Store namespace instead of the Windows.ApplicationModel.Store namespace if possible. Informationen zum Windows.ApplicationModel.Store-Namespace, finden Sie in diesem Artikel.For information about the Windows.ApplicationModel.Store namespace, see this article.

In diesem AbschnittIn this section

VideoVideo

Im folgenden Video wird eine Übersicht über das Implementieren von In-App-Käufe in Ihrer App mithilfe des Windows.Services.Store Namespace bereitgestellt.Watch the following video for an overview of how to implement in-app purchases in your app using the Windows.Services.Store namespace.

Erste Schritte mit der StoreContext-KlasseGet started with the StoreContext class

Der Haupteinstiegspunkt in den Windows.Services.Store-Namespace ist die StoreContext-Klasse.The main entry point to the Windows.Services.Store namespace is the StoreContext class. Diese Klasse stellt Methoden bereit, mit denen Sie Informationen für die aktuelle App und die verfügbaren Add-Ons abrufen, eine App oder ein Add-On für den aktuellen Benutzer kaufen, Lizenzinformationen für die aktuelle App oder die Add-Ons abrufen und weitere Aufgaben durchführen können.This class provides methods you can use to get info for the current app and its available add-ons, get license info for the current app or its add-ons, purchase an app or add-on for the current user, and perform other tasks. Gehen Sie zum Abrufen eines StoreContext-Objekts wie folgt vor:To get a StoreContext object, do one of the following:

  • Rufen Sie in einer Einzelbenutzer-App (einer App, die nur im Kontext des Benutzers ausgeführt wird, der die App gestartet hat) mit der statischen GetDefault-Methode ein StoreContext-Objekt ab, mit dem Sie auf Microsoft Store-bezogene Daten für den Benutzer zugreifen können.In a single-user app (that is, an app that runs only in the context of the user that launched the app), use the static GetDefault method to get a StoreContext object that you can use to access Microsoft Store-related data for the user. Die meisten Apps für die universelle Windows-Plattform (UWP) sind Einzelbenutzer-Apps.Most Universal Windows Platform (UWP) apps are single-user apps.

    Windows.Services.Store.StoreContext context = StoreContext.GetDefault();
    
  • Verwenden Sie in einer Mehrbenutzer-App die statische GetForUser-Methode, um ein StoreContext-Objekt abzurufen, mit dem Sie für einen bestimmten Benutzer, der beim Verwenden der App mit seinem Microsoft-Konto angemeldet ist, auf Microsoft Store-bezogene Daten zugreifen können.In a multi-user app, use the static GetForUser method to get a StoreContext object that you can use to access Microsoft Store-related data for a specific user who is signed in with their Microsoft account while using the app. Im folgenden Beispiel wird ein StoreContext-Objekt für den ersten verfügbaren Benutzer abgerufen.The following example gets a StoreContext object for the first available user.

    var users = await Windows.System.User.FindAllAsync();
    Windows.Services.Store.StoreContext context = StoreContext.GetForUser(users[0]);
    

Hinweis

Bei Windows-Desktopanwendungen, die die Desktop-Brücke verwenden, müssen zum Konfigurieren des StoreContext-Objekts zusätzliche Schritte ausgeführt werden, bevor dieses verwendet werden kann.Windows desktop applications that use the Desktop Bridge must perform additional steps to configure the StoreContext object before they can use this object. Weitere Informationen finden Sie in diesem Abschnitt.For more information, see this section.

Nachdem Sie über ein StoreContext-Objekt verfügen, können Sie beginnen, Methoden dieses Objekts aufzurufen, um Store-Produktinformationen und Lizenzinformationen für die aktuelle App und deren Add-Ons abzurufen, eine App oder ein Add-On für den aktuellen Benutzer zu erwerben und weitere Aufgaben auszuführen.After you have a StoreContext object, you can start calling methods of this object to get Store product info for the current app and its add-ons, retrieve license info for the current app and its add-ons, purchase an app or add-on for the current user, and perform other tasks. Weitere Informationen zu den allgemeinen Aufgaben, die Sie mit diesem Objekt ausführen können, finden Sie in den folgenden Artikeln:For more information about common tasks you can perform using this object, see the following articles:

Eine Beispiel-App, die die Verwendung von StoreContext und anderen Typen im Windows.Services.Store-Namespace aufzeigt, finden Sie im Store-Beispiel.For a sample app that demonstrates how to use StoreContext and other types in the Windows.Services.Store namespace, see the Store sample.

Implementieren von In-App-KäufenImplement in-app purchases

So bieten Sie den Kunden mit dem Windows.Services.Store-Namespace in Ihrer App In-App-Käufe anTo offer an in-app purchase to customers in your app using the Windows.Services.Store namespace:

  1. Wenn Ihre app-Add-Ons, die Kunden erwerben können bietet, erstellen Sie im Partner Center-Add-On-Übermittlungen für Ihre app .If your app offers add-ons that customers can purchase, create add-on submissions for your app in Partner Center .

  2. Schreiben Sie Code für Ihre App, um Produktinformationen über Ihre App oder ein von der App angebotenes Add-On abzurufen. Ermitteln Sie anschließend, ob die Lizenz aktiv ist (d. h., ob der Benutzer über eine Lizenz für die App bzw. das Add-On verfügt).Write code in your app to retrieve product info for your app or an add-on offered by your app and then determine whether the license is active (that is, whether the user has a license to use the app or add-on). Wenn die Lizenz nicht aktiv ist, zeigen Sie eine Benutzeroberfläche an, auf der die App bzw. das Add-On dem Benutzer als In-App-Kauf angeboten wird.If the license isn't active, display a UI that offers the app or add-on for sale to the user as an in-app purchase.

  3. Wenn sich der Benutzer für den Kauf Ihrer App oder Ihres Add-Ons entscheidet, verwenden Sie für den Erwerb des Produkts die geeignete Methode:If the user chooses to purchase your app or add-on, use the appropriate method to purchase the product:

  4. Testen der Implementierung anhand der Hinweise für Tests in diesem Artikel.Test your implementation by following the testing guidance in this article.

Implementieren der TestfunktionenImplement trial functionality

So schränken Sie mit dem Windows.Services.Store-Namespace Features in einer Testversion Ihrer App ein oder schließen diese ausTo exclude or limit features in a trial version of your app using the Windows.Services.Store namespace:

  1. Konfigurieren Sie Ihre app als eine kostenlose Testversion im Partner Center.Configure your app as a free trial in Partner Center.

  2. Schreiben Sie Code für Ihre App, um Produktinformationen über Ihre App oder ein von der App angebotenes Add-On abzurufen, und ermitteln Sie anschließend, ob es sich bei der der App zugeordneten Lizenz um eine Testlizenz handelt.Write code in your app to retrieve product info for your app or an add-on offered by your app and then determine whether the license associated with the app is a trial license.

  3. Handelt es sich um eine Testversion der App, schließen Sie bestimmte Features aus oder schränken Sie sie ein, und aktivieren Sie diese, wenn der Benutzer eine Lizenz für die Vollversion erwirbt.Exclude or limit certain features in your app if it is a trial, and then enable the features when the user purchases a full license. Weitere Informationen und ein Codebeispiel finden Sie unter Implementieren einer Testversion der App.For more information and a code example, see Implement a trial version of your app.

  4. Testen der Implementierung anhand der Hinweise für Tests in diesem Artikel.Test your implementation by following the testing guidance in this article.

Testen der Implementierung für den In-App-Kauf oder die TestversionTest your in-app purchase or trial implementation

Wenn Ihre App APIs im Windows.Services.Store-Namespace zum Implementieren von In-App-Käufe und Testfunktionen verwendet, müssen Sie Ihre App im Store veröffentlichen und die App auf Ihrem Entwicklungsgerät herunterladen, um seine Lizenz für Tests zu verwenden.If your app uses APIs in the Windows.Services.Store namespace to implement in-app purchase or trial functionality, you must publish your app to the Store and download the app to your development device to use its license for testing. Gehen Sie folgendermaßen vor, um Ihren Code zu testen:Follow this process to test your code:

  1. Wenn Ihre app noch nicht veröffentlicht wurde und verfügbar in der Store ist, stellen Sie sicher, dass Ihre app die Mindestanforderungen Windows App Certification Kit Anforderungen übermitteln Ihrer app im Partner Center, und stellen Sie sicher, dass Ihre app übergibt den Zertifizierungsprozess.If your app is not yet published and available in the Store, make sure your app meets the minimum Windows App Certification Kit requirements, submit your app in Partner Center, and make sure your app passes the certification process. Optional können Sie die App so konfigurieren, daher sie während der Tests im Store nicht auffindbar ist.You can configure your app so it is not discoverable in the Store while you test it. Bitte beachten Sie die ordnungsgemäße Konfiguration von Paket Flüge.Please note the proper configuration of package flights. Falsch konfigurierte Paket Flüge werden möglicherweise nicht heruntergeladen werden können.Incorrectly configured package flights may be not be able to be downloaded.

  2. Stellen Sie anschließend sicher, dass die folgenden Schritte durchgeführt wurden:Next, make sure you have completed the following:

  3. Öffnen Sie Ihr Projekt in Visual Studio, klicken Sie auf das Menü „Projekt“ , zeigen Sie auf Store, und klicken Sie dann auf App mit Store verknüpfen.With your project open in Visual Studio, click the Project menu, point to Store, and then click Associate App with the Store. Führen Sie die Anweisungen im Assistenten für das app-Projekt mit der app in Ihrem Partner Center-Konto zuordnen, die Sie für Tests verwenden möchten.Complete the instructions in the wizard to associate the app project with the app in your Partner Center account that you want to use for testing.

    Hinweis

    Wenn Sie das Projekt nicht mit einer App im Store verknüpfen, legen die StoreContext-Methoden die ExtendedError-Eigenschaften ihrer Rückgabewerte auf den Fehlercodewert 0x803F6107 fest.If you do not associate your project with an app in the Store, the StoreContext methods set the ExtendedError property of their return values to the error code value 0x803F6107. Dieser Wert gibt an, dass die App im Store nicht bekannt ist.This value indicates that the Store doesn't have any knowledge about the app.

  4. Falls noch nicht geschehen, installieren Sie die App aus dem im vorherigen Schritt angegebenen Store, führen Sie die App einmal aus, und schließen Sie dann diese App.If you have not done so already, install the app from the Store that you specified in the previous step, run the app once, and then close this app. Damit wird sichergestellt, dass auf dem Gerät für die Entwicklung eine gültige Lizenz für die App installiert wird.This ensures that a valid license for the app is installed to your development device.

  5. Starten Sie in Visual Studio die Ausführung oder das Debuggen des Projekts.In Visual Studio, start running or debugging your project. Der Code sollte App- und Add-On-Daten aus der Store-App abrufen, die Sie mit dem lokalen Projekt verknüpft haben.Your code should retrieve app and add-on data from the Store app that you associated with your local project. Wenn Sie zur Neuinstallation der App aufgefordert werden, folgen Sie den Anweisungen, und führen Sie dann das Projekt aus oder debuggen Sie es.If you are prompted to reinstall the app, follow the instructions and then run or debug your project.

    Hinweis

    Nachdem Sie diese Schritte ausgeführt haben, können Sie mit dem Aktualisieren des App-Codes fortfahren und dann das aktualisierte Projekt auf dem Entwicklungscomputer debuggen, ohne neue App-Pakete an den Store zu übermitteln.After you complete these steps, you can continue to update your app's code and then debug your updated project on your development computer without submitting new app packages to the Store. Sie müssen die Store-Version Ihrer App nur einmal auf den Entwicklungscomputer herunterladen, um die lokale Lizenz zu erhalten, die zum Testen verwendet wird.You only need to download the Store version of your app to your development computer once to obtain the local license that will be used for testing. Sie übermitteln neue App-Pakete erst an den Store, nachdem Sie die Tests abgeschlossen haben und Ihren Kunden App-Features zur Verfügung stellen möchten, die sich auf In-App-Käufe oder Testversionen beziehen.You only need to submit new app packages to the Store after you complete your testing and you want to make the in-app purchase or trial-related features in your app available to your customers.

Wenn Ihre App den Windows.ApplicationModel.Store-Namespace verwendet, können Sie die CurrentAppSimulator-Klasse in Ihrer App nutzen, um Lizenzinformationen während der Tests vor dem Übermitteln an den Store simulieren zu können.If your app uses the Windows.ApplicationModel.Store namespace, you can use the CurrentAppSimulator class in your app to simulate license info during testing before you submit your app to the Store. Weitere Informationen finden Sie unter beginnen Sie mit der CurrentApp und CurrentAppSimulator-Klasse.For more information, see Get started with the CurrentApp and CurrentAppSimulator classes.

Hinweis

Der Windows.Services.Store-Namespace stellt keine Klasse bereit, mit der Sie während der Tests Lizenzinformationen simulieren können.The Windows.Services.Store namespace does not provide a class that you can use to simulate license info during testing. Wenn den Windows.Services.Store-Namespace zum Implementieren von In-App-Käufe oder Testversionen verwendet, müssen Sie Ihre App im Store wie oben beschrieben veröffentlichen und die App auf Ihrem Entwicklungsgerät herunterladen, um seine Lizenz für Tests zu verwenden.If you use the Windows.Services.Store namespace to implement in-app purchases or trials, you must publish your app to the Store and download the app to your development device to use its license for testing as described above.

Belege für In-App-KäufeReceipts for in-app purchases

Der Windows.Services.Store-Namespace verfügt über keine API, mit der Sie im Code der App einen Transaktionsbeleg für erfolgreiche Käufe erhalten können.The Windows.Services.Store namespace does not provide an API you can use to obtain a transaction receipt for successful purchases in your app's code. Dies unterscheidet sich von Apps, die den Windows.ApplicationModel.Store-Namespace verwenden, der zum Abrufen von Transaktionsbelegen eine clientseitige API verwenden kann.This is a different experience from apps that use the Windows.ApplicationModel.Store namespace, which can use a client-side API to retrieve a transaction receipt.

Wenn Sie In-App-Käufe mit dem Windows.Services.Store-Namespace implementieren und überprüfen möchten, ob ein bestimmter Kunde eine App oder ein Add-On erworben hat, können Sie die Produktmethodenabfrage in der REST-API der Microsoft Store-Sammlung verwenden.If you implement in-app purchases using the Windows.Services.Store namespace and you want to validate whether a given customer has purchased an app or add-on, you can use the query for products method in the Microsoft Store collection REST API. Die für diese Methode zurückgegebenen Daten bestätigen, ob der jeweilige Kunde über eine Berechtigung für ein bestimmtes Produkt verfügt. Zudem werden Daten für die Transaktion bereitgestellt, im Rahmen derer der Benutzer das Produkt erworben hat.The return data for this method confirms whether the specified customer has an entitlement for a given product, and provides data for the transaction in which the user acquired the product. Die Microsoft Store-Sammlungs-API verwendet zum Abrufen dieser Informationen die Azure AD-Authentifizierung.The Microsoft Store collection API uses Azure AD authentication to retrieve this information.

Verwenden der StoreContext-Klasse mit der Desktop-BrückeUsing the StoreContext class with the Desktop Bridge

Für Desktopanwendungen, die die Desktop-Brücke verwenden, kann zum Implementieren von In-App-Käufen und Testversionen die StoreContext-Klasse verwendet werden.Desktop applications that use the Desktop Bridge can use the StoreContext class to implement in-app purchases and trials. Wenn Sie jedoch über eine Win32-Desktopanwendung oder eine Desktopanwendung mit Fenster-Handle (HWND) verfügen, die dem Renderingframework zugeordnet ist (z. B. eine WPF-Anwendung), muss für Ihre Anwendung das StoreContext-Objekt konfiguriert werden, um anzugeben, welches Anwendungsfenster das Besitzerfenster für die vom Objekt angezeigten modalen Dialogfelder ist.However, if you have a Win32 desktop application or a desktop application that has a window handle (HWND) that is associated with the rendering framework (such as a WPF application), your application must configure the StoreContext object to specify which application window is the owner window for modal dialogs that are shown by the object.

Viele StoreContext-Member (und andere Member verwandter Typen, auf die über das StoreContext-Objekt zugegriffen wird) zeigen den Benutzern für Store-bezogene Vorgänge wie z. B. den Kauf eines Produkts ein modales Dialogfeld an.Many StoreContext members (and members of other related types that are accessed through the StoreContext object) display a modal dialog to the user for Store-related operations such as purchasing a product. Wenn für eine Desktopanwendung das StoreContext-Objekt nicht konfiguriert wurde, um das Besitzerfenster für modale Dialogfelder anzugeben, gibt das Objekt ungenaue Daten oder Fehler zurück.If a desktop application does not configure the StoreContext object to specify the owner window for modal dialogs, this object will return inaccurate data or errors.

Führen Sie die folgenden Schritte durch, um ein StoreContext-Objekt in einer Desktopanwendung zu konfigurieren, die die Desktop-Brücke verwendet.To configure a StoreContext object in a desktop application that uses the Desktop Bridge, follow these steps.

  1. Führen Sie einen der folgenden Schritte aus, um Ihrer App den Zugriff auf die IInitializeWithWindow-Schnittstelle zu ermöglichen:Do one of the following to enable your app to access the IInitializeWithWindow interface:

    • Wenn die Anwendung in einer verwalteten Sprache wie z. B. C# oder Visual Basic geschrieben wurde, deklarieren Sie die IInitializeWithWindow-Schnittstelle im App-Code wie im folgenden C#-Beispiel mit dem ComImport-Attribut.If your application is written in a managed language such as C# or Visual Basic, declare the IInitializeWithWindow interface in your app's code with the ComImport attribute as shown in the following C# example. In diesem Beispiel wird davon ausgegangen, dass Ihre Codedatei über eine using-Anweisung für den System.Runtime.InteropServices-Namespace verfügt.This example assumes that your code file has a using statement for the System.Runtime.InteropServices namespace.

      [ComImport]
      [Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")]
      [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
      public interface IInitializeWithWindow
      {
          void Initialize(IntPtr hwnd);
      }
      
    • Wenn Ihre Anwendung in C++ geschrieben ist, fügen Sie im Code einen Verweis auf die Headerdatei „shobjidl.h“ hinzu.If your application is written in C++, add a reference to the shobjidl.h header file in your code. Diese Headerdatei enthält die Deklaration der IInitializeWithWindow-Schnittstelle.This header file contains the declaration of the IInitializeWithWindow interface.

  2. Rufen Sie wie weiter oben in diesem Artikel beschrieben mit der GetDefault-Methode (oder GetForUser, falls Ihre App eine Mehrbenutzer-App ist) ein StoreContext-Objekt ab, und wandeln Sie es in ein IInitializeWithWindow-Objekt um.Get a StoreContext object by using the GetDefault method (or GetForUser if your app is a multi-user app) as described earlier in this article, and cast this object to an IInitializeWithWindow object. Rufen Sie dann die IInitializeWithWindow.Initialize-Methode auf, und übergeben Sie das Handle des Fensters, das der Besitzer aller modalen Dialoge sein soll, die durch StoreContext-Methoden angezeigt werden.Then, call the IInitializeWithWindow.Initialize method, and pass the handle of the window that you want to be the owner for any modal dialogs that are shown by StoreContext methods. Im folgenden C#-Beispiel wird gezeigt, wie das Handle des Hauptfensters der App an die Methode übergeben wird.The following C# example shows how to pass the handle of your app's main window to the method.

    StoreContext context = StoreContext.GetDefault();
    IInitializeWithWindow initWindow = (IInitializeWithWindow)(object)context;
    initWindow.Initialize(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
    

Produkte, SKUs und VerfügbarkeitenProducts, SKUs, and availabilities

Jedes Produkt im Store verfügt über mindestens eine SKU, und jede SKU verfügt über mindestens eine Verfügbarkeit.Every product in the Store has at least one SKU, and each SKU has at least one availability. Diese Konzepte werden die meisten Entwickler im Partner Center ausgelagert, und die meisten Entwickler nie SKUs oder Verfügbarkeit für ihre apps oder -Add-Ons definieren.These concepts are abstracted away from most developers in Partner Center, and most developers will never define SKUs or availabilities for their apps or add-ons. Da jedoch das Objektmodell für Store-Produkte im Windows.Services.Store-Namespace SKUs und Verfügbarkeiten umfasst, können Grundkenntnisse zu diesen Konzepten für einige Szenarien hilfreich sein.However, because the object model for Store products in the Windows.Services.Store namespace includes SKUs and availabilities, a basic understanding of these concepts can be helpful for some scenarios.

ObjektObject BeschreibungDescription
ProduktProduct Ein Produkt stellt alle im Store verfügbaren Produkttypen dar, einschließlich der Apps und Add-Ons.A product refers to any type of product that is available in the Store, including an app or add-on.

Jedes Produkt im Store verfügt über ein entsprechendes StoreProduct Objekt.Each product in the Store has a corresponding StoreProduct object. Diese Klasse stellt Eigenschaften für den Zugriff auf Daten bereit, z. B. die Store-ID des Produkts, die Bilder und Videos für den Store-Eintrag sowie Preisinformationen.This class provides properties you can use to access data such as the Store ID of the product, the images and videos for the Store listing, and pricing info. Sie stellt außerdem Methoden bereit, mit denen Sie das Produkt kaufen können.It also provides methods you can use to purchase the product.

SKUSKU Eine SKU ist eine bestimmte Version eines Produkts mit eigener Beschreibung, Preis und anderen eindeutigen Produktdetails.A SKU is a specific version of a product with its own description, price, and other unique product details. Jede App und jedes Add-On verfügt über eine Standard-SKU.Each app or add-on has a default SKU. Die meisten Entwickler verfügen nur dann über mehrere SKUs für eine App, wenn sie eine Vollversion der App und eine Testversion veröffentlichen (im Store-Katalog ist jede dieser Versionen eine andere SKU derselben App).The only time most developers will ever have multiple SKUs for an app is if they publish a full version of their app and a trial version (in the Store catalog, each of these versions is a different SKU of the same app).

Einige Herausgeber können ihre eigenen SKUs definieren.Some publishers have the ability to define their own SKUs. Ein großer Spieleherausgeber kann z. B. ein Spiel mit einer SKU, die grünes Blut zeigt, in Märkten veröffentlichen, in denen kein rotes Blut zulässig ist, und eine andere SKU für rotes Blut in allen anderen Märkten.For example, a large game publisher might release a game with one SKU that shows green blood in markets that don't allow red blood and a different SKU that shows red blood in all other markets. Alternativ kann ein Herausgeber, der digitale Videoinhalte verkauft, zwei SKUs für ein Video veröffentlichen, eine SKU für eine HD-Version und eine andere SKU für die SD-Version.Alternatively, a publisher who sells digital video content might publish two SKUs for a video, one SKU for the high-definition version and a different SKU for the standard-definition version.

Jede SKU im Store verfügt über ein entsprechendes StoreSku Objekt.Each SKU in the Store has a corresponding StoreSku object. Jedes StoreProduct hat eine Skus-Eigenschaft, mit der Sie auf die SKUs für das Produkt zugreifen können.Every StoreProduct has a Skus property you can use to access the SKUs for the product.

VerfügbarkeitAvailability Eine Verfügbarkeit ist eine bestimmte Version einer SKU mit eigenen eindeutigen Preisinformationen.An availability is a specific version of a SKU with its own unique pricing info. Jede SKU verfügt über eine Standardverfügbarkeit.Each SKU has a default availability. Einige Herausgeber können eigene Verfügbarkeiten zum Vorstellen unterschiedlicher Preisoptionen für eine bestimmte SKU definieren.Some publishers have the ability to define their own availabilities to introduce different price options for a given SKU.

Jede Verfügbarkeit im Store verfügt über ein entsprechendes StoreAvailability Objekt.Each availability in the Store has a corresponding StoreAvailability object. Jede StoreSku verfügt über eine Availabilities-Eigenschaft, mit der Sie auf die Verfügbarkeiten für die SKU zugreifen können.Every StoreSku has an Availabilities property you can use to access the availabilities for the SKU. Für die meisten Entwickler verfügt jede SKU über eine einzelne Standardverfügbarkeit.For most developers, each SKU has a single default availability.

Store-IDsStore IDs

Jede App, jedes Add-On oder jedes andere Produkt im Store hat eine zugeordnete Store-ID (diese wird manchmal auch als Produkt-Store-ID bezeichnet).Every app, add-on, or other product in the Store has an associated Store ID (this is also sometimes called a product Store ID). Viele APIs erfordern eine Store-ID, um einen Vorgang für eine App oder ein Add-On auszuführen.Many APIs require the Store ID in order to perform an operation on an app or add-on.

Die Store-ID eines Produkts im Store ist eine zwölfstellige alphanumerische Zeichenfolge, z. B. 9NBLGGH4R315.The Store ID of any product in the Store is 12-character alpha-numeric string, such as 9NBLGGH4R315. Es gibt mehrere Möglichkeiten, die Store-ID für ein Produkt im Store zu erhalten:There are several different ways to get the Store ID for a product in the Store:

  • Sie können die Store-ID für eine app abrufen, auf die Seite "App-Identität" im Partner Center.For an app, you can get the Store ID on the App identity page in Partner Center.
  • Für ein Add-on können Sie die Store-ID auf der hinzufügen-auf der Seite "Übersicht" im Partner Center abrufen.For an add-on, you can get the Store ID on the add-on's overview page in Partner Center.
  • Für jedes Produkt können Sie außerdem die Store-ID programmgesteuert mit der StoreId-Eigenschaft des StoreProduct-Objekts des Produkts erhalten.For any product, you can also get the Store ID programmatically by using the StoreId property of the StoreProduct object that represents the product.

Für Produkte mit SKUs und Verfügbarkeiten haben die SKUs und Verfügbarkeiten außerdem eigene Store-IDs in verschiedenen Formaten.For products with SKUs and availabilities, the SKUs and availabilities also have their own Store IDs with different formats.

ObjektObject Store-ID-FormatStore ID format
SKUSKU Die SKU-ID für eine SKU hat das Format <product Store ID>/xxxx, wobei xxxx eine vierstellige alphanumerische Zeichenfolge ist, die eine SKU für das Produkt identifiziert.The Store ID for a SKU has the format <product Store ID>/xxxx, where xxxx is a 4-character alpha-numeric string that identifies a SKU for the product. Beispiel: 9NBLGGH4R315/000NHyper-V-Hosts oder Hyper-V-Hostcluster in einem separaten Namespace als verwaltete Hyper-V-Hosts hinzuzufügen.For example, 9NBLGGH4R315/000N. Diese ID wird von der StoreId-Eigenschaft eines StoreSku-Objekts zurückgegeben und mitunter als die SKU-Store-ID bezeichnet.This ID is returned by the StoreId property of a StoreSku object, and it is sometimes called the SKU Store ID.
VerfügbarkeitAvailability Die Store-ID für eine Verfügbarkeit hat das Format <product Store ID>/xxxx/yyyyyyyyyyyy, wobei xxxx eine vierstellige alphanumerische Zeichenfolge ist, die eine SKU für das Produkt identifiziert, und yyyyyyyyyyyy eine zwölfstellige alphanumerische Zeichenfolge, die eine Verfügbarkeit für die SKU identifiziert.The Store ID for an availability has the format <product Store ID>/xxxx/yyyyyyyyyyyy, where xxxx is a 4-character alpha-numeric string that identifies a SKU for the product and yyyyyyyyyyyy is a 12-character alpha-numeric string that identifies an availability for the SKU. Beispiel: 9NBLGGH4R315/000N/4KW6QZD2VN6XHyper-V-Hosts oder Hyper-V-Hostcluster in einem separaten Namespace als verwaltete Hyper-V-Hosts hinzuzufügen.For example, 9NBLGGH4R315/000N/4KW6QZD2VN6X. Diese ID wird von der StoreId-Eigenschaft eines StoreAvailability-Objekts zurückgegeben und mitunter als die Verfügbarkeits-Store-ID bezeichnet.This ID is returned by the StoreId property of a StoreAvailability object, and it is sometimes called the availability Store ID.

So verwenden Sie die Produkt-IDs für Add-Ons im CodeHow to use product IDs for add-ons in your code

Wenn Sie ein Add-on für Ihre Kunden im Rahmen Ihrer app verfügbar machen möchten, müssen Sie Geben Sie eine eindeutige Produkt-ID für das Add-on bei der Sie Ihrer Add-on-Übermittlung erstellen im Partner Center.If you want to make an add-on available to your customers in the context of your app, you must enter a unique product ID for your add-on when you create your add-on submission in Partner Center. Sie können diese Produkt-ID verwenden, um in Ihrem Code auf das Add-On zu verweisen. Die Szenarien, in denen Sie die Produkt-ID verwenden können, hängen jedoch davon ab, welchen Namespace Sie für In-App-Käufe in Ihrer App verwenden.You can use this product ID to refer to the add-on in your code, although the specific scenarios in which you can use the product ID depend on which namespace you use for in-app purchases in your app.

Hinweis

Die Produkt-ID, die Sie im Partner Center für ein Add-on eingeben unterscheidet sich von der hinzufügen-auf Store ID.The product ID that you enter in Partner Center for an add-on is different than the add-on's Store ID. Die Store-ID wird vom Partner Center generiert.The Store ID is generated by Partner Center.

Apps, die den Windows.Services.Store-Namespace verwendenApps that use the Windows.Services.Store namespace

Wenn Ihre App den Windows.Services.Store-Namespace verwendet, können Sie die Produkt-ID verwenden, um das StoreProduct zu identifizieren, das das Add-On oder die StoreLicense darstellt, die Ihre Lizenz darstellt.If your app uses the Windows.Services.Store namespace, you can use the product ID to easily identify the StoreProduct that represents your add-on or the StoreLicense that represents your add-on's license. Die Produkt-ID wird über die Eigenschaften StoreProduct.InAppOfferToken und StoreLicense.InAppOfferToken verfügbar gemacht.The product ID is exposed by the StoreProduct.InAppOfferToken and StoreLicense.InAppOfferToken properties.

Hinweis

Zwar ist die Produkt-ID eine praktische Möglichkeit zum Identifizieren eines Add-Ons im Code, der Großteil der Vorgänge im Windows.Services.Store-Namespace verwendet jedoch die Store-ID eines Add-Ons anstelle der Produkt-ID.Although the product ID is a useful way to identify an add-on in your code, most operations in the Windows.Services.Store namespace use the Store ID of an add-on instead of the product ID. Um z. B. um eines oder mehrere bekannte Add-Ons für eine App programmgesteuert abrufen, übergeben Sie die Store-IDs (statt die Produkt-IDs) der Add-Ons an die GetStoreProductsAsync-Methode.For example, to programmatically retrieve one or more known add-ons for an app, pass the Store IDs (rather than the product IDs) of the add-ons to the GetStoreProductsAsync method. Um ein verbrauchbares Add-On als erfüllt zu melden, übergeben Sie ebenfalls die Store-ID des Add-Ons (statt die Produkt-ID) an die ReportConsumableFulfillmentAsync-Methode.Similarly, to report a consumable add-on as fulfilled, pass the Store ID of the add-on (rather than the product ID) to the ReportConsumableFulfillmentAsync method.

Apps, die den Windows.ApplicationModel.Store-Namespace verwendenApps that use the Windows.ApplicationModel.Store namespace

Wenn Ihre app verwendet die Windows.ApplicationModel.Store -Namespace, müssen Sie die Produkt-ID verwenden, die Sie ein Add-on im Partner Center für die meisten Vorgänge zuweisen.If your app uses the Windows.ApplicationModel.Store namespace, you'll need to use the product ID that you assign to an add-on in Partner Center for most operations. Zum Beispiel:For example: