Creare una versione di prova dell'app (HTML)
[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]
Se gli utenti possono usare la tua app gratuitamente per un periodo di prova, puoi progettarla in modo da escludere o limitare alcune funzionalità durante quel periodo. Puoi anche abilitare alcune funzionalità, come banner o filigrane, da visualizzare solo durante il periodo di prova, prima che l'utente acquisti l'app. Vediamo come è possibile aggiungere queste funzionalità all'app.
Se vuoi provare a utilizzare le app di valutazione e altre funzionalità chiave di Windows 8, scarica le esercitazioni pratiche per Windows 8. Queste esercitazioni forniscono un'introduzione dettagliata modulare alla creazione di un'app di Windows Store di esempio in un linguaggio di programmazione scelto da te, come JavaScript e HTML o C# e XAML.
Cosa sapere
Tecnologie
- Windows Runtime
- Windows.ApplicationModel.Store
Prerequisiti
- App di Windows Runtime da modificare
Istruzioni
Passaggio 1: Scegli le funzionalità che vuoi abilitare o disabilitare durante il periodo di prova
Lo stato di licenza corrente dell'app è archiviato come proprietà della classe LicenseInformation. In genere, inserisci le funzioni che dipendono dallo stato della licenza in un blocco condizionale, come descritto nel prossimo passaggio. Quando prendi in considerazione queste funzionalità, assicurati di poterle implementare in modo che funzionino con tutti gli stati di licenza.
Decidi anche come gestire le modifiche alla licenza dell'app mentre è in esecuzione. L'app di prova può avere funzionalità complete, ma anche banner di annunci in-app che la versione a pagamento non ha. Oppure l'app di prova può disabilitare alcune funzionalità o visualizzare messaggi normali per chiedere agli utenti di acquistarla.
Pensa al tipo di app che stai realizzando e alla versione di prova o la strategia di scadenza che meglio si adattano al tuo progetto. Per la versione di prova di un gioco, limitare la quantità del contenuto del gioco a cui un utente può giocare è un'ottima strategia. Per la versione di prova di un'utilità, puoi considerare di impostare una data di scadenza o limitare le funzionalità che un compratore potenziale può usare.
Per la maggior parte delle app non di gioco, l'impostazione di una data di scadenza funziona bene, poiché gli utenti hanno il tempo di farsi un'idea chiara dell'app completa. Vediamo alcuni scenari comuni di impostazione di una data di scadenza e i modi in cui puoi gestirli.
La licenza di prova scade mentre l'app è in esecuzione
Se il periodo di prova scade mentre l'app è in esecuzione, questa può:
- Non fare nulla.
- Visualizzare un messaggio all'utente.
- Chiudersi.
- Chiedere all'utente di acquistare l'app.
La procedura consigliata consiste nel visualizzare un messaggio che chiede all'utente di acquistare l'app e, se l'utente l'acquista, riprendere l'esecuzione con tutte le funzionalità abilitate. Se l'utente decide di non acquistare l'app, puoi chiuderla o inviargli regolarmente dei promemoria per l'acquisto.
La licenza di prova scade prima che l'app venga avviata
Se il periodo di prova scade prima che l'utente avvii l'app, quest'ultima non verrà avviata. Al contrario, gli utenti visualizzeranno una finestra di dialogo con l'opzione per acquistare l'app dallo Store.
L'utente acquista l'app mentre è in esecuzione
Se l'utente acquista l'app mentre è in esecuzione, questa può:
- Non fare nulla e continuare in modalità di prova finché l'utente non la riavvia.
- Ringraziare l'utente per l'acquisto o visualizzare un messaggio.
- Abilitare automaticamente le funzionalità disponibili con la licenza completa (o disabilitare gli avvisi specifici della versione di prova).
Se vuoi rilevare il cambio di licenza ed eseguire un'azione nell'app, devi aggiungere un gestore eventi specifico, come descritto nel prossimo passaggio.
Passaggio 2: Inizializzare le info di licenza
Durante l'inizializzazione dell'app, recupera l'oggetto LicenseInformation come illustrato in questo esempio. Partiamo dal presupposto che licenseInformation è una variabile locale o un campo di tipo LicenseInformation.
Inizializza CurrentApp o CurrentAppSimulator per accedere alle info di licenza dell'app.
function initializeLicense()
{
// (some app initialization functions)
// Initialize the license info for use in the app that is uploaded to the Store.
// uncomment for release
// currentApp = Windows.ApplicationModel.Store.CurrentApp;
// Initialize the license info for testing.
// comment the next line for release
currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;
// get the license info
licenseInformation = currentApp.licenseInformation;
// (other app initialization functions)
}
Aggiungi un gestore di eventi per ricevere le notifiche quando l'app è in esecuzione. Ad esempio, la licenza dell'app potrebbe cambiare se il periodo di prova scade o il cliente acquista l'app attraverso lo Store.
function initializeLicense()
{
// some app initialization functions
// Initialize the license info for use in the app that is uploaded to the Store.
// uncomment for release
// currentApp = Windows.ApplicationModel.Store.CurrentApp;
// Initialize the license info for testing.
// comment the next line for release
currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;
// Get the license info
licenseInformation = currentApp.licenseInformation;
// Register for the license state change event.
licenseInformation.addEventListener("licensechanged", reloadLicense);
// other app initializations function
}
function reloadLicense()
{
// (code is in next steps)
}
Passaggio 3: Codificare le funzionalità in blocchi condizionali
Quando viene generato l'evento di modifica della licenza, l'app deve chiamare l'API per le licenze per determinare se lo stato della versione di prova è stato modificato. Il codice in questo passaggio mostra come strutturare il gestore di questo evento. A questo punto, se un utente ha comprato l'app, è una buona procedura fornire un feedback all'utente che lo avvisi della modifica dello stato di licenza. Se l'app è stata codificata in questo modo, dovrai chiedere all'utente di riavviarla. Rendi però questa transizione il più possibile uniforme e facile.
Questo esempio mostra come valutare lo stato di licenza di un'app in modo da poter abilitare o disabilitare una funzionalità di conseguenza.
function 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.
}
}
Passaggio 4: Ottenere la data di scadenza per la versione di prova di un'app (solo Windows)
Includi il codice per determinare la data di scadenza della versione di prova di un'app.
Il codice in questo esempio definisce una funzione per ottenere la data di scadenza della licenza della versione di prova dell'app. Se la licenza è ancora valida, visualizza la data di scadenza con il numero di giorni che mancano alla scadenza della versione di prova.
function displayTrialVersionExpirationTime()
{
if (licenseInformation.isActive)
{
if (licenseInformation.isTrial)
{
var longDateFormat = Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longdate");
// Display the expiration date using the DateTimeFormatter.
// For example, longDateFormat.format(licenseInformation.expirationDate)
var daysRemaining = (licenseInformation.expirationDate - new Date()) / 86400000;
// Let the user know the number of days remaining before the feature expires.
}
else
{
// ...
}
}
else
{
// ...
}
}
Passaggio 5: Verificare le funzionalità usando le chiamate simulate all'API per le licenze
Prova ora l'app usando le chiamate simulate al server licenze. In JavaScript, C#, Visual Basic o Visual C++, sostituisci i riferimenti a CurrentApp con CurrentAppSimulator nel codice di inizializzazione dell'app.
CurrentAppSimulator ottiene le info di licenza specifiche dei test da un file XML chiamato "WindowsStoreProxy.xml", che si trova in %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. Se il percorso e il file non esistono, devi crearli durante l'installazione o in fase di esecuzione. Se provi ad accedere alla proprietà CurrentAppSimulator.LicenseInformation senza WindowsStoreProxy.xml presente in quel percorso specifico, riceverai un messaggio di errore.
L'esempio illustra come puoi aggiungere codici all'app per provarla in diversi stati di licenza.
function appInit
{
// some app initialization functions
// Initialize the license info for use in the app that is uploaded to the Store.
// uncomment for release
// currentApp = Windows.ApplicationModel.Store.CurrentApp;
// Initialize the license info for testing.
// comment the next line for release
currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;
// Get the license info
licenseInformation = currentApp.licenseInformation;
// other app initialization functions
}
Puoi modificare WindowsStoreProxy.xml per cambiare le date di scadenza simulate per l'app e le sue funzionalità. Per assicurarti che tutto funzioni nel modo previsto, verifica tutte le possibili configurazioni di licenza e di scadenza.
Passaggio 6: Sostituire i metodi di API per le licenze simulati con l'API effettiva
Dopo aver verificato l'app con il server di licenza simulato e prima di inviarla a uno Store per la certificazione, sostituisci CurrentAppSimulator con CurrentApp, come mostrato nell'esempio di codice che segue.
Importante La tua app deve usare l'oggetto CurrentApp quando la invii a uno Store, altrimenti non supererà la certificazione.
function appInit
{
// (some app initialization functions)
// Initialize the license info for use in the app that is uploaded to the Store.
// uncomment for release
currentApp = Windows.ApplicationModel.Store.CurrentApp;
// Initialize the license info for testing.
// comment the next line for release
// currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;
// Get the license info
licenseInformation = currentApp.licenseInformation;
// (other app initialization functions)
}
Passaggio 7: Descrivere agli utenti il funzionamento della versione di prova gratuita
Non dimenticare di spiegare agli utenti come si comporterà la tua app durante e dopo il periodo di prova gratuito, in modo che non abbiano sorprese.
Per altre info sulla descrizione dell'app, vedi Descrizione dell'app.