Archive for august, 2013

Ako vytvoriť trial verziu platenej aplikácie pre Windows 8

19. augusta 2013

Windows Obchod umožňuje distribuovať aplikácie zdarma, alebo na komerčnej báze, pričom vývojárom a firmám vytvárajúcim aplikácie poskytuje rôzne spôsoby, ako zhodnotiť ich úsilie a zarábať peniaze. I keď budete svoju aplikáciu predávať, zvážte možnosť, aby si ju zákazníci mohli vyskúšať zadarmo. Po vyskúšaní funkčne, alebo časovo obmedzenej verzie potom môže spokojný zákazník zakúpiť plnú verziu buď priamo z aplikácie alebo prostredníctvom Windows Obchodu.

Túto dilemu som riešil v aplikácii Skúšky bezpečnostného zamestnanca http://apps.microsoft.com/windows/app/skusky-bezpecnostneho/6ff06690-8c03-4ed3-85f6-95e164f62c53. Námetom aplikácie je príprava na skúšku podľa zákona 215/2004. Ako technicky zameranému človeku mi tento zákon znel ako španielska dedina. Preto som si sám pre seba urobil Windows 8 aplikáciu ktorá umožňuje precvičiť všetkých 240 možných otázok. Bol to pre mna technokrata jediný spôsob ako sa to naučiť. Aplikácia sa osvedčila (skúšku som urobil na plný počet bodov) a tak som ju poskytol cez Windows Obchod aj ďalším nešťastníkom ktorým táto skúška hrozí.

Aby som svoju námahu (snáď) zúročil, dal som aplikáciu do Windows Store ako platenú. V skúšobných verziách môžete obmedziť funkcionalitu, takže kým si zákazník nekúpi plnú verziu, bude mať dostupné len určité funkcie, alebo mu poskytnete skúšobnú verziu či už s plnou, alebo obmedzenou funkčnosťou po určenú dobu. Ak si zákazník aplikáciu nekúpi, prestane po uplynutí tohto časového obdobia fungovať. Pri časovom obmedzení nemusí vývojár v aplikácii urobiť ani riadok kódu navyše, dĺžku skúšobnej doby nastaví pri publikovaní aplikácie do Windows obchodu.

V trial aplikácii som obmedzil počet dostupných otázok z 240 na 10. Riešil som to takto

LicenseInformation licenseInformation = null;

void initializeLicense()
{
// Initialize the license info for use in the app that is uploaded to the Store.
// uncomment for release
licenseInformation = CurrentApp.LicenseInformation;
// Initialize the license info for testing.

// comment the next line for release
//licenseInformation = CurrentAppSimulator.LicenseInformation;
}

Procedúru spúšťam pri inicializácii aplikácie

Aplikácia v reálnej prevádzke si načíta údaje o licencii z objektu CurrentApp.LicenseInformation.
Pri simulácii som miesto tohto objektu využil CurrentAppSimulator. Tento funguje podľa údajov z XML súboru trial-mode.xml, ktorý som dal do zložky Data.

<?xml
version=1.0
encoding=utf-16 ?>
<CurrentApp>
<ListingInformation>
<App>
<AppId>2B14D306-D8F8-4066-A45B-0FB3464C67F2</AppId>
<LinkUri>http://apps.microsoft.com/webpdp/app/2B14D306-D8F8-4066-A45B-0FB3464C67F2</LinkUri>
<CurrentMarket>en-US</CurrentMarket>
<AgeRating>3</AgeRating>
<MarketData
xml:lang=en-us>

<Name>Trial management full license</Name>
<Description>Sample app for demonstrating trial license management</Description>
<Price>4.99</Price>
<CurrencySymbol>$</CurrencySymbol>
<CurrencyCode>USD</CurrencyCode>
</MarketData>
</App>
</ListingInformation>
<LicenseInformation>
<App>
<IsActive>true</IsActive>
<IsTrial>false</IsTrial>
<ExpirationDate>2014-01-01T00:00:00.00Z</ExpirationDate>
</App>
</LicenseInformation>
</CurrentApp>

Súbor natiahnem procedúrou

private
async
Task LoadTrialModeProxyFileAsync()
{
StorageFolder proxyDataFolder = await
Package.Current.InstalledLocation.GetFolderAsync(“Data”);
StorageFile proxyFile = await proxyDataFolder.GetFileAsync(“trial-mode.xml”);
await
CurrentAppSimulator.ReloadSimulatorAsync(proxyFile);
}

Pri inicializácii aplikácie spustím procedúru ktorá rozlíši v akom režime aplikácia beží

void ReloadLicense()
{
 if (licenseInformation.IsActive)
{
if (licenseInformation.IsTrial)
{
// funkcie dostupné v skúšobnej verzii.
App.Current.bTrial = true;
tbTrial.Text = “Trial verzia je obmedzená na 10 otázok. Plná verzia má 240 otázok a test 30 náhodných otázok ako pri reálnej skúške “;
}
else
{
// funkcie dostupné po zakúpení licencie.
App.Current.bTrial = false;
tbTrial.Text = “Aktuálna verzia obsahuje 240 otázok”;
}
}
else
{
// neaktívna licencia, alebo spustenie na vývojárskom PC.
App.Current.bTrial = false;
tbTrial.Text = “240 otázok”;
}
}

Ako ste túto problematiku Vy? Podeľte sa so svojími skúsenosťami s vývojármi Windows 8 aplikácií