Unterstützen des Kaufs von In-App-Produkten

Sie können unabhängig davon, ob Ihre App kostenlos oder kostenpflichtig ist, Inhalte, andere Apps oder neue App-Funktionen (wie das Freischalten des nächsten Levels eines Spiels) direkt in der App verkaufen. Hier zeigen wir Ihnen, wie Sie diese Produkte in Ihrer App aktivieren können.

Wichtig

In diesem Artikel wird veranschaulicht, wie Mitglieder des Windows.ApplicationModel.Store-Namespace verwendet werden, um In-App-Produktkäufe zu ermöglichen. Dieser Namespace wird nicht mehr mit neuen Features aktualisiert, und es wird empfohlen, stattdessen den Windows.Services.Store-Namespace zu verwenden. Der Windows.Services.Store-Namespace unterstützt die neuesten Add-On-Typen, z. B. vom Store verwaltete Verbrauchsartikel-Add-Ons und Abonnements, und ist so konzipiert, dass er mit zukünftigen Produkttypen und Features kompatibel ist, die von Partner Center und dem Store unterstützt werden. Der Windows.Services.Store-Namespace wurde in Windows 10, Version 1607, eingeführt und kann nur in Projekten verwendet werden, die Windows 10 Anniversary Edition (10.0; Build 14393) oder eine höhere Version in Visual Studio. Weitere Informationen zum Aktivieren von In-App-Produktkäufen mithilfe des Windows.Services.Store-Namespace finden Sie in diesem Artikel.

Hinweis

In-App-Produkte können nicht über eine Testversion einer App angeboten werden. Kunden, die eine Testversion Ihrer App verwenden, können nur dann In-App-Produkte kaufen, wenn sie eine Vollversion der App kaufen.

Voraussetzungen

  • Eine Windows-App zum Hinzufügen von Features zum Kauf für Kunden.
  • Wenn Sie Code für neue In-App-Produkte erstmalig schreiben und testen, müssen Sie anstelle des CurrentAppSimulator-Objekts das CurrentApp-Objekt verwenden. Auf diese Weise können Sie überprüfen, ob die Lizenzlogik simulierte Aufrufe an den Lizenzserver und nicht an den Liveserver verwendet. Dazu müssen Sie die Datei mit dem Namen WindowsStoreProxy.xml in %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData anpassen. Diese Datei wird vom Simulator in Microsoft Visual Studio erstellt, wenn Sie Ihre App zum ersten Mal ausführen. Sie können jedoch auch eine benutzerdefinierte Version dieser Datei zur Laufzeit laden. Weitere Informationen finden Sie unter Verwenden der Datei „WindowsStoreProxy.xml“ mit CurrentAppSimulator.
  • In diesem Thema wird auch auf Codebeispiele verwiesen, die im Store-Beispiel zu finden sind. Dieses Beispiel bietet eine hervorragende Möglichkeit, die verschiedenen Monetarisierungsoptionen zu testen, die für universelle Windows-Plattform (UWP)-Apps verfügbar sind.

Schritt 1: Initialisieren der Lizenzinfos für Ihre App

Rufen Sie bei der Initialisierung Ihrer App das LicenseInformation-Objekt für Ihre App ab, indem Sie CurrentApp oder CurrentAppSimulator initialisieren, um Einkäufe von In-App-Produkten zu aktivieren.

void InitializeApp()
{
    // Some app initialization code...

    // Initialize the license info for use in the app that is uploaded to the Store.
    // Uncomment the following line in the release version of your app.
    //   licenseInformation = CurrentApp.LicenseInformation;

    // Initialize the license info for testing.
    // Comment the following line in the release version of your app.
    licenseInformation = CurrentAppSimulator.LicenseInformation;

    // Other app initialization code...
}

Schritt 2: Hinzufügen von In-App-Produktangeboten zu Ihrer App

Erstellen Sie für jedes Feature, das über ein In-App-Produkt zur Verfügung stehen soll, ein Angebot in der App, und fügen Sie es Ihrer App hinzu.

Wichtig

Sie müssen ihrer App alle In-App-Produkte hinzufügen, die Sie Ihren Kunden präsentieren möchten, bevor Sie sie an den Store übermitteln. Wenn Sie zu einem späteren Zeitpunkt neue In-App-Produkte hinzufügen möchten, müssen Sie die App aktualisieren und eine neue Version übermitteln.

  1. Erstellen Sie ein Token für In-App-Angebote

    Sie identifizieren die einzelnen In-App-Produkte Ihrer App durch Token. Bei diesem Token handelt es sich um eine Zeichenfolge, die Sie festlegen und in Ihrer App und im Store verwenden, um ein bestimmtes In-App-Produkt zu identifizieren. Geben Sie ihm einen (für Ihre App) eindeutigen und aussagekräftigen Namen, sodass Sie beim Schreiben des Codes schnell das richtige Feature ermitteln können, für das es steht. Im Folgenden finden Sie einige Beispiele für Namen:

    • "SpaceMissionLevel4"
    • "ContosoCloudSave"
    • "RainbowThemePack"

Hinweis

Das In-App-Angebotstoken, das Sie in Ihrem Code verwenden, muss mit dem Produkt-ID-Wert übereinstimmen, den Sie beim Definieren des entsprechenden Add-Ons für Ihre App im Partner Center angeben.

  1. Schreiben Sie den Code für das Feature in einem Bedingungsblock.

    Sie müssen den Code für jedes Feature, das mit einem In-App-Produkt verknüpft ist, in einen Bedingungsblock aufnehmen. Dieser Bedingungsblock überprüft, ob ein Kunde eine Lizenz für die Verwendung dieses Features besitzt.

    Im folgenden Beispiel wird gezeigt, wie Sie Code für das Produkt-Feature featureName in einem lizenzspezifischen Bedingungsblock kodieren. Die Zeichenfolge featureName ist das Token, das dieses Produkt innerhalb der App eindeutig identifiziert und auch verwendet wird, um es im Store zu identifizieren.

    if (licenseInformation.ProductLicenses["featureName"].IsActive)
    {
        // the customer can access this feature
    }
    else
    {
        // the customer can' t access this feature
    }
    
  2. Fügen Sie die Kauf-UI für dieses Feature hinzu.

    Ihre App muss den Kunden außerdem die Möglichkeit bieten, das über das In-App-Produkt angebotene Produkt oder Feature zu kaufen. Das Feature oder Produkt kann nicht auf die gleiche Weise wie die gesamte App im Store erworben werden.

    Hier finden Sie ein Beispiel dafür, wie Sie testen, ob der Kunde bereits ein In-App-Produkt besitzt. Es veranschaulicht außerdem, wie das Kaufdialogfeld angezeigt wird, sodass der Kunde es ggf. erwerben kann. Ersetzen Sie den Kommentar "Kaufdialogfeld anzeigen" durch Ihren benutzerdefinierten Code für das Kaufdialogfeld (z. B. eine Seite mit einer benutzerfreundlichen Schaltfläche "Diese App kaufen!").

    async void BuyFeature()
    {
        if (!licenseInformation.ProductLicenses["featureName"].IsActive)
        {
            try
            {
                // The customer doesn't own this feature, so
                // show the purchase dialog.
                await CurrentAppSimulator.RequestProductPurchaseAsync("featureName", false);
    
                //Check the license state to determine if the in-app purchase was successful.
            }
            catch (Exception)
            {
                // The in-app purchase was not completed because
                // an error occurred.
            }
        }
        else
        {
            // The customer already owns this feature.
        }
    }
    

Schritt 3: Ändern Sie den Testcode für die endgültigen Aufrufe.

Dies ist ein einfacher Schritt: Ändern Sie im Code Ihrer App alle Verweise auf CurrentAppSimulator in CurrentApp. Sie müssen die Datei „WindowsStoreProxy.xml“ nicht mehr bereitstellen. Entfernen Sie diese daher aus dem Pfad Ihrer App. Sie können sie jedoch zu späteren Referenzzwecken speichern, wenn Sie im nächsten Schritt das Angebot in der App konfigurieren.

Schritt 4: Konfigurieren des In-App-Produktangebots im Store

Navigieren Sie im Partner Center zu Ihrer App, und erstellen Sie ein Add-On , das Ihrem In-App-Produktangebot entspricht. Definieren Sie die Produkt-ID, den Typ, den Preis und andere Eigenschaften für Ihr Add-On. Die Konfiguration muss genau mit der Konfiguration in der Datei WindowsStoreProxy.xml übereinstimmen, die Sie beim Testen festlegen.

Hinweis

Das In-App-Angebotstoken, das Sie in Ihrem Code verwenden, muss mit dem Produkt-ID-Wert übereinstimmen, den Sie für das entsprechende Add-On in Partner Center angeben.

Hinweise

Wenn Sie Ihren Kunden konsumierbare In-App-Produktoptionen (Elemente, die gekauft, verwendet und erneut gekauft werden können, wenn gewünscht) bereitstellen möchten, wechseln Sie zum Thema Unterstützen von Käufen konsumierbarer In-App-Produkte.

Wenn Sie anhand von Belegen überprüfen möchten, ob ein Kunde einen In-App-Einkauf getätigt hat, lesen Sie den Artikel Überprüfen von Produktkäufen anhand von Belegen.