Ausschließen oder Einschränken von Features in einer Testversion
Wenn Sie Kunden die kostenlose Nutzung Ihrer App während eines Testzeitraums ermöglichen, 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. Ermitteln Sie, welche Features eingeschränkt werden sollen, bevor Sie mit dem Codieren beginnen, und stellen Sie dann sicher, dass Ihre App nur dann funktioniert, wenn eine vollständige Lizenz erworben wurde. Sie können auch Features wie Banner oder Wasserzeichen aktivieren, die in der Testversion angezeigt werden, bis Kund*innen Ihre App kaufen.
Wichtig
In diesem Artikel wird die Verwendung von Membern des Windows.ApplicationModel.Store Namespace zum Implementieren von Testfunktionen veranschaulicht. 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 Verbrauchs-Add-Ons und Abonnements, und ist so konzipiert, dass er mit zukünftigen Produkttypen und Features kompatibel ist, die vom Partner Center und dem Store unterstützt werden. Der Windows.Services.Store-Namespace wurde in der Version 1607 von Windows 10 eingeführt und kann ausschließlich in Projekten verwendet werden, die auf Windows 10 Anniversary Edition (Build 14393 der Version 10.0) oder ein späteres Release in Visual Studio ausgelegt ist. Weitere Informationen zur Implementierung von Testfunktionen mithilfe des Windows.Services.Store-Namespace finden Sie in diesem Artikel.
Voraussetzungen
Eine Windows-App, in der Kunden Features zum Kauf hinzufügen können.
Schritt 1: Auswählen der Features, die Sie während des Testzeitraums aktivieren oder deaktivieren möchten
Der aktuelle Lizenzstatus Ihrer App wird als Eigenschaften der LicenseInformation-Klasse gespeichert. In der Regel platzieren Sie die Funktionen, die vom Lizenzstatus in einem bedingten Block abhängen, wie im nächsten Schritt beschrieben. Stellen Sie bei der Betrachtung dieser Features sicher, dass Sie sie auf eine Weise implementieren können, die in allen Lizenzzuständen funktioniert.
Entscheiden Sie außerdem, wie Sie Änderungen an der App-Lizenz behandeln möchten, während die App ausgeführt wird. Ihre Test-App kann voll funktionsfähig sein, verfügt aber über In-App-Anzeigenbanner, bei denen die kostenpflichtige Version nicht funktioniert. Oder Ihre Test-App kann bestimmte Features deaktivieren oder regelmäßige Meldungen anzeigen, die den Benutzer zum Kauf auffordern.
Überlegen Sie, welche Art von App Sie erstellen, und was eine gute Test- oder Ablaufstrategie dafür ist. Für eine Testversion eines Spiels ist eine gute Strategie, die Anzahl der Spielinhalte einzuschränken, die ein Benutzer spielen kann. Bei einer Testversion eines Hilfsprogramms können Sie ein Ablaufdatum festlegen oder die Features einschränken, die ein potenzieller Käufer verwenden kann.
Für die meisten Nicht-Gaming-Apps funktioniert das Festlegen eines Ablaufdatums gut, da Benutzer ein gutes Verständnis für die vollständige App entwickeln können. Im Folgenden finden Sie einige gängige Ablaufszenarien und Ihre Optionen für die Behandlung.
Die Testlizenz läuft ab, während die App ausgeführt wird.
Wenn die Testversion abläuft, während Ihre App ausgeführt wird, kann Ihre App:
- Sie unternehmen nichts.
- Zeigen Sie Ihren Kunden eine Meldung an.
- Fast richtig.
- Fordern Sie Ihren Kunden auf, die App zu kaufen.
Die bewährte Methode besteht darin, eine Meldung mit einer Aufforderung zum Kauf der App anzuzeigen, und wenn der Kunde sie kauft, fahren Sie mit allen aktivierten Features fort. Wenn der Benutzer entscheidet, die App nicht zu kaufen, schließen Sie sie, oder erinnern Sie sie daran, die App in regelmäßigen Abständen zu kaufen.
Testlizenz läuft ab, bevor die App gestartet wird
Wenn die Testversion abläuft, bevor der Benutzer die App startet, wird Ihre App nicht gestartet. Stattdessen wird benutzern ein Dialogfeld angezeigt, in dem sie die Möglichkeit erhalten, Ihre App aus dem Store zu kaufen.
Der Kunde kauft die App, während sie ausgeführt wird.
Wenn der Kunde Ihre App während der Ausführung kauft, finden Sie hier einige Aktionen, die Ihre App ausführen kann.
- Führen Sie nichts aus, und lassen Sie sie im Testmodus fortfahren, bis sie die App neu starten.
- Vielen Dank, dass sie eine Nachricht kaufen oder anzeigen.
- Aktivieren Sie im Hintergrund die Features, die mit einer Volllizenz verfügbar sind (oder deaktivieren Sie die Nur-Testversionen).
Wenn Sie die Lizenzänderung erkennen und eine Aktion in Ihrer App ausführen möchten, müssen Sie einen Ereignishandler für diese Aktion hinzufügen, wie im nächsten Schritt beschrieben.
Schritt 2: Initialisieren der Lizenzinformationen
Rufen Sie beim Initialisieren der App das LicenseInformation-Objekt für Ihre App ab, wie in diesem Beispiel gezeigt. Es wird davon ausgegangen, dass licenseInformation eine globale Variable oder ein Feld vom Typ "LicenseInformation" ist.
Vorerst erhalten Sie simulierte Lizenzinformationen mithilfe von CurrentAppSimulator anstelle von CurrentApp. Bevor Sie die Version Ihrer App an den Store übermitteln, müssen Sie alle CurrentAppSimulator-Verweise in Ihrem Code durch CurrentApp ersetzen.
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...
}
Fügen Sie als Nächstes einen Ereignishandler hinzu, um Benachrichtigungen zu empfangen, wenn sich die Lizenz ändert, während die App ausgeführt wird. Die App-Lizenz kann sich ändern, wenn der Testzeitraum abläuft oder der Kunde die App beispielsweise über einen Store kauft.
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;
// Register for the license state change event.
licenseInformation.LicenseChanged += LicenseInformation_LicenseChanged;
// Other app initialization code...
}
void LicenseInformation_LicenseChanged()
{
// This method is defined later.
ReloadLicense();
}
Schritt 3: Programmieren der Features in bedingten Blöcken
Wenn das Lizenzänderungsereignis ausgelöst wird, muss Ihre App die Lizenz-API aufrufen, um festzustellen, ob sich der Teststatus geändert hat. Der Code in diesem Schritt zeigt, wie Der Handler für dieses Ereignis strukturiert wird. Wenn ein Benutzer die App gekauft hat, empfiehlt es sich, dem Benutzer Feedback zu geben, dass der Lizenzierungsstatus geändert wurde. Möglicherweise müssen Sie den Benutzer bitten, die App neu zu starten, wenn Sie die App so codiert haben. Aber machen Sie diesen Übergang so nahtlos und schmerzlos wie möglich.
In diesem Beispiel wird gezeigt, wie Sie den Lizenzstatus einer App auswerten, damit Sie ein Feature Ihrer App entsprechend aktivieren oder deaktivieren können.
void ReloadLicense()
{
if (licenseInformation.IsActive)
{
if (licenseInformation.IsTrial)
{
// Show the features that are available during trial only.
}
else
{
// Show the features that are available only with a full license.
}
}
else
{
// A license is inactive only when there' s an error.
}
}
Schritt 4: Abrufen des Ablaufdatums der Testversion einer App
Schließen Sie Code ein, um das Ablaufdatum der Testversion der App zu ermitteln.
Der Code in diesem Beispiel definiert eine Funktion, um das Ablaufdatum der Testlizenz der App abzurufen. Wenn die Lizenz noch gültig ist, zeigen Sie das Ablaufdatum mit der Anzahl der Tage an, die bis zum Ablauf der Testversion verbleiben.
void DisplayTrialVersionExpirationTime()
{
if (licenseInformation.IsActive)
{
if (licenseInformation.IsTrial)
{
var longDateFormat = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longdate");
// Display the expiration date using the DateTimeFormatter.
// For example, longDateFormat.Format(licenseInformation.ExpirationDate)
var daysRemaining = (licenseInformation.ExpirationDate - DateTime.Now).Days;
// Let the user know the number of days remaining before the feature expires
}
else
{
// ...
}
}
else
{
// ...
}
}
Schritt 5: Testen der Features mithilfe simulierter Aufrufe der Lizenz-API
Testen Sie nun Ihre App mithilfe simulierter Daten. CurrentAppSimulator ruft testspezifische Lizenzierungsinformationen aus einer XML-Datei namens WindowsStoreProxy.xml ab, die sich in %UserProfile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData befindet. Sie können WindowsStoreProxy.xml bearbeiten, um die simulierten Ablaufdaten für Ihre App und deren Features zu ändern. Testen Sie alle möglichen Ablauf- und Lizenzierungskonfigurationen, um sicherzustellen, dass alles wie beabsichtigt funktioniert. Weitere Informationen finden Sie unter Verwenden der WindowsStoreProxy.xml-Datei mit CurrentAppSimulator.
Wenn dieser Pfad und diese Datei nicht vorhanden sind, müssen Sie sie entweder während der Installation oder zur Laufzeit erstellen. Wenn Sie versuchen, auf die CurrentAppSimulator.LicenseInformation-Eigenschaft zuzugreifen, ohne WindowsStoreProxy.xml an diesem bestimmten Speicherort vorhanden zu sein, wird ein Fehler angezeigt.
Schritt 6: Ersetzen der simulierten Lizenz-API-Methoden durch die tatsächliche API
Nachdem Sie Ihre App mit dem simulierten Lizenzserver getestet haben und ihre App an einen Store zur Zertifizierung übermitteln, ersetzen Sie CurrentAppSimulator durch CurrentApp, wie im nächsten Codebeispiel gezeigt.
Wichtig
Ihre App muss das CurrentApp-Objekt verwenden, wenn Sie Ihre App an einen Store übermitteln oder die Zertifizierung fehlschlägt.
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;
// Register for the license state change event.
licenseInformation.LicenseChanged += LicenseInformation_LicenseChanged;
// Other app initialization code...
}
Schritt 7: Beschreiben, wie die kostenlose Testversion für Ihre Kunden funktioniert
Erläutern Sie unbedingt, wie sich Ihre App während und nach dem kostenlosen Testzeitraum verhält, damit Ihre Kunden nicht vom Verhalten Ihrer App überrascht werden.
Weitere Informationen zur Beschreibung Ihrer App finden Sie unter Erstellen von App-Beschreibungen.
Zugehörige Themen
- Store-Beispiel (veranschaulicht Testversionen und In-App-Käufe)
- Festlegen der Preise und Verfügbarkeit von Apps
- CurrentApp
- CurrentAppSimulator