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.
Wenn Sie Ihre App als kostenlose Testversion im Partner Center so konfigurieren, dass 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. 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 nur während der Testversion angezeigt werden, bevor ein Kunde Ihre App kauft.
In diesem Artikel wird erläutert, wie Sie Mitglieder der StoreContext Klasse im Windows.Services.Store Namespace verwenden, um festzustellen, ob der Benutzer über eine Testlizenz für Ihre App verfügt und benachrichtigt werden kann, wenn sich der Status der Lizenz ändert, während die 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 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.
Richtlinien für die Implementierung einer Testversion
Der aktuelle Lizenzstatus Ihrer App wird als Eigenschaften der StoreAppLicense 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, enthält jedoch In-App-Anzeigenbanner, die in der kostenpflichtigen Version nicht vorhanden sind. 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 Auslaufstrategie für diese App 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 den Umgang damit.
Testlizenz läuft ab, während die App läuft
Wenn die Testversion ausläuft, während Ihre App noch läuft, kann Ihre App:
- Nichts tun.
- Zeigen Sie Ihrem Kunden eine Meldung an.
- Schließen.
- 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.
Kunde kauft die App, während sie in Betrieb ist
Wenn der Kunde Ihre App kauft, während sie ausgeführt wird, gibt es 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.
- Danken Sie ihnen für den Kauf oder zeigen Sie eine Nachricht an.
- Aktivieren Sie stillschweigend die Funktionen, die mit einer Volllizenz verfügbar sind (oder deaktivieren Sie die Hinweise nur für Testversionen).
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 zum Beschreiben Ihrer App finden Sie unter Erstellen von App-Beschreibungen.
Voraussetzungen
In diesem Beispiel sind die folgenden Voraussetzungen erfüllt:
- 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 im Partner Center erstellt, die als kostenlose Testversion ohne Zeitlimit konfiguriert ist und im Store veröffentlicht wurde. Sie können die App optional so konfigurieren, dass sie beim Testen nicht im Store auffindbar ist. Weitere Informationen finden Sie in unserem Testleitfaden.
Der Code in diesem Beispiel 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 bridgeverwendet, 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ückeverwendet.
Codebeispiel
Rufen Sie beim Initialisieren der App das StoreAppLicense--Objekt für Ihre App ab. Behandeln Sie das OfflineLicensesChanged--Ereignis, um Benachrichtigungen zu erhalten, wenn die Lizenz sich ändert, während die App ausgeführt wird. Beispielsweise kann sich die App-Lizenz ändern, wenn der Testzeitraum abläuft oder der Kunde die App über einen Store kauft. Wenn sich die Lizenz ändert, rufen Sie die neue Lizenz ab und aktivieren oder deaktivieren Sie entsprechend eine Funktion Ihrer App.
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.
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-.