Implementieren einer Testversion der App

Wenn Sie Ihre App im Partner Center als kostenlose Testversion konfigurieren , sodass Kunden Ihre App während eines Testzeitraums kostenlos verwenden können, können Sie Ihre Kunden dazu verleiten, ein Upgrade auf die Vollversion Ihrer App durchzuführen, indem Sie einige Features während des Testzeitraums ausschließen oder einschränken. Bestimmen Sie die einzuschränkenden Features, bevor Sie mit dem Codieren beginnen, und stellen Sie dann sicher, dass diese nur beim Erwerb einer Lizenz für die Vollversion der App verfügbar sind. Außerdem können Sie Features wie Banner oder Wasserzeichen aktivieren, die nur in der Testversion angezeigt werden, bevor ein Kunde Ihre App kauft.

In diesem Artikel erfahren Sie, wie Sie Mitglieder der StoreContext-Klasse im Windows.Services.Store-Namespace verwenden, um zu bestimmen, ob der Benutzer über eine Testlizenz für Ihre App verfügt, und benachrichtigt werden, wenn sich der Lizenzstatus ändert, während Ihre App ausgeführt wird.

Hinweis

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. 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. hier finden Sie weitere Informationen

Richtlinien für die Implementierung einer Testversion

Der aktuelle Lizenzstatus Ihrer App wird als Eigenschaften der StoreAppLicense-Klasse gespeichert. In der Regel nehmen Sie die vom Lizenzstatus abhängigen Funktionen in einen Bedingungsblock auf wie im nächsten Schritt beschrieben. Stellen Sie beim Auswählen dieser Features sicher, dass sie auf eine Weise implementiert werden können, dass sie in jedem Lizenzstatus funktionieren.

Überlegen Sie auch, wie Änderungen an der App-Lizenz während der Ausführung der App verarbeitet werden sollen. Ihre Test-App kann alle Features, jedoch zusätzlich In-App-Anzeigenbanner enthalten, die die kostenpflichtige Version nicht enthält. Oder in der Test-App sind bestimmte Features deaktiviert, oder es werden regelmäßig Aufforderungen zum Kauf angezeigt.

Überlegen Sie, welche Art App Sie erstellen und welche Test- oder Ablaufstrategie sich gut für sie eignet. Bei einer Testversion für ein Spiel hat es sich bewährt, den Umfang des Spielinhalts, den ein Anwender nutzen kann, zu beschränken. Bei der Testversion eines Hilfsprogramms möchten Sie vielleicht ein Ablaufdatum festlegen oder die Features einschränken, die ein potenzieller Kunde verwenden kann.

Bei den meisten Apps, die keine Spiele sind, ist das Festlegen eines Ablaufdatums eine gute Methode, da Benutzer ein gutes Verständnis für die vollständige App entwickeln. Im Folgenden sind häufige Ablaufszenarien und Ihre Optionen für ihre Handhabung aufgeführt.

  • Ablauf der Testlizenz während der App-Ausführung

    Falls die Testversion abläuft, während die App ausgeführt wird, kann Ihre App:

    • Sie unternehmen nichts.
    • dem Kunden eine Meldung anzeigen.
    • Fast richtig.
    • den Kunden auffordern, die App zu kaufen.

    Die beste Vorgehensweise besteht darin, eine Meldung mit der Aufforderung zum Kauf der App anzuzeigen und nach dem Kauf die App mit allen aktivierten Features fortzusetzen. Wenn der Kunde die App nicht kauft, wird die App geschlossen, oder der Kunde wird in regelmäßigen Abständen daran erinnert, die App zu kaufen.

  • Ablauf der Testlizenz vor dem Starten der App

    Falls die Testversion abläuft, bevor der Benutzer die App startet, wird Ihre App nicht gestartet. Stattdessen sehen Benutzer ein Dialogfeld, das ihnen die Möglichkeit bietet, die App im Windows Store zu kaufen.

  • Kauf der App durch den Kunden während der App-Ausführung

    Wenn der Kunde Ihre App während der Ausführung erwirbt, kann die App:

    • keine Aktion ausführen und die Fortsetzung im Testmodus bis zum Neustart der App zulassen.
    • dem Kunden für den Kauf danken oder eine andere Meldung anzeigen.
    • die Features aktivieren, die mit einer Volllizenz verfügbar sind (oder die Meldungen, dass es sich um eine Testversion handelt, deaktivieren).

Beschreiben Sie, wie sich Ihre App während und nach dem kostenlosen Testzeitraum verhält, sodass Ihre Kunden vom Verhalten Ihrer App nicht überrascht werden. Weitere Informationen zum Beschreiben Ihrer App finden Sie unter Erstellen von App-Beschreibungen.

Voraussetzungen

Für dieses Beispiel gelten die folgenden Voraussetzungen:

  • Ein Visual Studio-Projekt für eine Universelle Windows-Plattform-App (UWP), die Windows 10 Anniversary Edition (10.0; Build 14393) oder höher.
  • Sie haben eine App im Partner Center erstellt, die als kostenlose Testversion ohne Zeitlimit konfiguriert ist und diese App im Store veröffentlicht wird. Optional können Sie die App so konfigurieren, dass sie während des Tests nicht im Store auffindbar ist. Weitere Informationen finden Sie in unserer Testanleitung.

Der Code in diesem Beispiel geht von folgenden Voraussetzungen aus:

  • 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. Diese Objekte werden verwendet, um anzugeben, dass ein asynchroner Vorgang ausgeführt wird, bzw. um Ausgabemeldungen anzuzeigen.
  • Die Codedatei enthält eine using-Anweisung für den Namespace Windows.Services.Store.
  • 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 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 diesem Beispiel 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ücke verwendet.

Codebeispiel

Ruft während des Initialisierens der App das StoreAppLicense-Objekt für Ihre App ab und behandelt das OfflineLicensesChanged-Ereignis, um Benachrichtigungen zu empfangen, wenn die Lizenz während der Ausführung der App geändert wird. Die App-Lizenz kann zum Beispiel geändert werden, wenn der Testzeitraum abläuft oder der Kunde die App in einem Store kauft. Ruft die neue Lizenz ab, wenn die Lizenz geändert wird, und aktiviert oder deaktiviert dementsprechend ein Feature Ihrer App.

Wenn ein Benutzer die App gekauft hat, wird empfohlen, den Benutzer zu diesem Zeitpunkt über den geänderten Lizenzstatus zu informieren. Gegebenenfalls müssen Sie den Benutzer zum Neustarten der App auffordern, falls Ihre Programmierung dies erfordert. Versuchen Sie jedoch, diesen Übergang so nahtlos und problemlos wie möglich zu gestalten.

private StoreContext context = null;
private StoreAppLicense appLicense = null;

// Call this while your app is initializing.
private async void InitializeLicense()
{
    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.
    }

    workingProgressRing.IsActive = true;
    appLicense = await context.GetAppLicenseAsync();
    workingProgressRing.IsActive = false;

    // Register for the licenced changed event.
    context.OfflineLicensesChanged += context_OfflineLicensesChanged;
}

private async void context_OfflineLicensesChanged(StoreContext sender, object args)
{
    // Reload the license.
    workingProgressRing.IsActive = true;
    appLicense = await context.GetAppLicenseAsync();
    workingProgressRing.IsActive = false;

    if (appLicense.IsActive)
    {
        if (appLicense.IsTrial)
        {
            textBlock.Text = $"This is the trial version. Expiration date: {appLicense.ExpirationDate}";

            // Show the features that are available during trial only.
        }
        else
        {
            // Show the features that are available only with a full license.
        }
    }
}

Eine vollständige Beispielanwendung finden Sie im Store-Beispiel.