Een evaluatieversie van uw app implementeren
Als u uw app configureren als een gratis proefversie in het Partnercentrum zodat klanten uw app gratis kunnen gebruiken tijdens een proefperiode, kunt u uw klanten verleiden om een upgrade uit te voeren naar de volledige versie van uw app door bepaalde functies tijdens de proefperiode uit te sluiten of te beperken. Bepaal welke functies moeten worden beperkt voordat u begint met coderen en zorg ervoor dat uw app alleen kan werken wanneer een volledige licentie is aangeschaft. U kunt ook functies, zoals banners of watermerken, inschakelen die alleen tijdens de proefversie worden weergegeven voordat een klant uw app koopt.
In dit artikel wordt beschreven hoe u leden van de klasse StoreContext in de Windows.Services.Store-naamruimte gebruikt om te bepalen of de gebruiker een proeflicentie voor uw app heeft en een melding ontvangt als de status van de licentie verandert terwijl uw app wordt uitgevoerd.
Notitie
De Windows.Services.Store naamruimte is geïntroduceerd in Windows 10, versie 1607 en kan alleen worden gebruikt in projecten die gericht zijn op Windows 10 Jubileumeditie (10.0; Build 14393) of een latere release in Visual Studio. Als uw app is gericht op een eerdere versie van Windows 10, moet u de Windows.ApplicationModel.Store naamruimte gebruiken in plaats van de Windows.Services.Store naamruimte. Zie dit artikelvoor meer informatie.
Richtlijnen voor het implementeren van een evaluatieversie
De huidige licentiestatus van uw app wordt opgeslagen als eigenschappen van de StoreAppLicense-klasse. Normaal gesproken plaatst u de functies die afhankelijk zijn van de licentiestatus in een voorwaardelijk blok, zoals in de volgende stap wordt beschreven. Wanneer u deze functies overweegt, moet u ervoor zorgen dat u ze op een manier kunt implementeren die in alle licentiestatussen werkt.
Bepaal ook hoe u wijzigingen in de licentie van de app wilt afhandelen terwijl de app wordt uitgevoerd. Uw proef-app kan volledig uitgerust zijn, maar er kunnen in-app advertentiebanners zijn waar de betaalde versie dat niet heeft. Of uw proef-app kan bepaalde functies uitschakelen of normale berichten weergeven waarin de gebruiker wordt gevraagd deze te kopen.
Denk na over het type app dat u maakt en wat een goede evaluatie- of verloopstrategie is. Voor een proefversie van een game is een goede strategie het beperken van de hoeveelheid game-inhoud die een gebruiker kan spelen. Voor een proefversie van een hulpprogramma kunt u overwegen een vervaldatum in te stellen of de functies te beperken die een potentiële koper kan gebruiken.
Voor de meeste niet-gaming-apps werkt het instellen van een vervaldatum goed, omdat gebruikers een goed begrip van de volledige app kunnen ontwikkelen. Hier volgen enkele veelvoorkomende verloopscenario's en uw opties voor het afhandelen van deze scenario's.
proeflicentie verloopt terwijl de app wordt uitgevoerd
Als de proefperiode afloopt terwijl uw app draait, kan uw app het volgende doen:
- Doe niets.
- Geef een bericht weer aan uw klant.
- Sluiten.
- Vraag uw klant om de app te kopen.
De aanbevolen procedure is om een bericht weer te geven met een prompt voor het kopen van de app en als de klant deze koopt, gaat u verder met alle functies die zijn ingeschakeld. Als de gebruiker besluit de app niet te kopen, sluit u de app of herinnert u hen eraan om de app regelmatig te kopen.
proeflicentie verloopt voordat de app wordt gestart
Als de proefversie verloopt voordat de gebruiker de app start, wordt uw app niet gestart. In plaats daarvan zien gebruikers een dialoogvenster waarin ze de optie krijgen om uw app in de Store aan te schaffen.
Klant koopt de app terwijl deze wordt uitgevoerd
Als de klant uw app koopt terwijl deze wordt uitgevoerd, volgen hier enkele acties die uw app kan uitvoeren.
- Doe niets en laat ze doorgaan in de evaluatiemodus totdat ze de app opnieuw starten.
- Bedank hen voor het kopen of toon een bericht.
- Schakel op de achtergrond de functies in die beschikbaar zijn met een volledige licentie (of schakel de kennisgevingen voor alleen proefversies uit).
Zorg ervoor dat u uitlegt hoe uw app zich gedraagt tijdens en na de gratis proefperiode, zodat uw klanten niet verrast worden door het gedrag van uw app. Zie App-beschrijvingen makenvoor meer informatie over het beschrijven van uw app.
Voorwaarden
Dit voorbeeld heeft de volgende vereisten:
- Een Visual Studio-project voor een UWP-app (Universal Windows Platform) die is gericht op Windows 10 Jubileumeditie (10.0; Build 14393) of een latere release.
- U hebt een app gemaakt in partnercentrum die is geconfigureerd als een gratis proefversie van zonder tijdslimiet en deze app wordt gepubliceerd in de Store. U kunt de app desgewenst configureren, zodat deze niet kan worden gedetecteerd in de Store terwijl u deze test. Zie onze testrichtlijnenvoor meer informatie.
In de code in dit voorbeeld wordt ervan uitgegaan:
- De code wordt uitgevoerd in de context van een Page- die een ProgressRing- met de naam
workingProgressRing
en een TextBlock- met de naamtextBlock
bevat. Deze objecten worden gebruikt om aan te geven dat er een asynchrone bewerking plaatsvindt en om respectievelijk uitvoerberichten weer te geven. - Het codebestand bevat een using-instructie voor de Windows.Services.Store-naamruimte.
- De app is een app met één gebruiker die alleen wordt uitgevoerd in de context van de gebruiker die de app heeft gestart. Zie in-app aankopen en proefversiesvoor meer informatie.
Notitie
Als u een bureaubladtoepassing hebt die gebruikmaakt van de Desktop Bridge-, moet u mogelijk extra code toevoegen die niet wordt weergegeven in dit voorbeeld om het StoreContext--object te configureren. Zie De StoreContext-klasse gebruiken in een bureaubladtoepassing die gebruikmaakt van de Desktop Bridge-voor meer informatie.
Codevoorbeeld
Wanneer uw app wordt geïnitialiseerd, haalt u het StoreAppLicense--object voor uw app op en verwerkt u de gebeurtenis OfflineLicensesChanged om meldingen te ontvangen wanneer de licentie verandert terwijl de app wordt uitgevoerd. De licentie van de app kan bijvoorbeeld veranderen als de proefperiode verloopt of de klant de app koopt via een Store. Wanneer de licentie wordt gewijzigd, haalt u de nieuwe licentie op en schakelt u een functie van uw app dienovereenkomstig in of uit.
Als een gebruiker de app op dit moment heeft gekocht, is het raadzaam feedback te geven aan de gebruiker dat de licentiestatus is gewijzigd. Mogelijk moet u de gebruiker vragen de app opnieuw te starten als u deze code hebt gecodeerd. Maar maak deze overgang zo naadloos en pijnloos mogelijk.
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.
}
}
}
Zie de Store-voorbeeldtoepassingvoor een volledige voorbeeldtoepassing.