Condividi tramite


Escludere o limitare le funzionalità in una versione di valutazione

Se consenti ai clienti di usare gratuitamente la tua app durante un periodo di valutazione, puoi invogliare i tuoi clienti a eseguire l'aggiornamento alla versione completa dell'app escludendo o limitando alcune funzionalità durante il periodo di valutazione. Determinare quali funzionalità devono essere limitate prima di iniziare a scrivere codice, quindi assicurarsi che l'app consenta di funzionare solo quando è stata acquistata una licenza completa. È anche possibile abilitare funzionalità, ad esempio banner o filigrane, visualizzate solo durante la versione di valutazione, prima che un cliente acquisti l'app.

Importante

Questo articolo illustra come usare i membri dello spazio dei nomi Windows.ApplicationModel.Store per implementare la funzionalità di valutazione. Questo spazio dei nomi non viene più aggiornato con nuove funzionalità ed è consigliabile usare invece lo spazio dei nomi Windows.Services.Store. Lo spazio dei nomi Windows.Services.Store supporta i tipi di componenti aggiuntivi più recenti, ad esempio componenti aggiuntivi e sottoscrizioni di consumo gestiti dallo Store, ed è progettato per essere compatibile con i tipi futuri di prodotti e funzionalità supportati dal Centro per i partner e dallo Store. Lo spazio dei nomi Windows.Services.Store è stato introdotto in Windows 10 versione 1607 e può essere utilizzato esclusivamente nei progetti per Windows 10 Anniversary Edition (10.0; Build 14393) o una versione successiva usata in Visual Studio. Per ulteriori informazioni sull'implementazione della funzionalità di valutazione usando lo spazio dei nomi Windows.Services.Store, consultare questo articolo.

Prerequisiti

Un'app di Windows in cui aggiungere funzionalità che i clienti possono acquistare.

Passaggio 1: Selezionare le funzionalità da abilitare o disabilitare durante il periodo di valutazione

Lo stato di licenza corrente dell'app viene archiviato come proprietà della classe LicenseInformation. In genere, si inserisce le funzioni che dipendono dallo stato della licenza in un blocco condizionale, come descritto nel passaggio successivo. Quando si considerano queste funzionalità, assicurarsi di poterle implementare in modo che funzioni in tutti gli stati di licenza.

Decidere anche come gestire le modifiche apportate alla licenza dell'app durante l'esecuzione dell'app. L'app di prova può essere completa, ma include banner pubblicitari in-app che non sono presenti nella versione a pagamento. In alternativa, l'app di valutazione può disabilitare determinate funzionalità o visualizzare messaggi regolari che chiedono all'utente di acquistarlo.

Pensa al tipo di app che stai creando e qual è una buona strategia di prova o scadenza. Per una versione di prova di un gioco, una buona strategia consiste nel limitare la quantità di contenuto del gioco che un utente può riprodurre. Per una versione di valutazione di un'utilità, è possibile impostare una data di scadenza o limitare le funzionalità che un potenziale acquirente può usare.

Per la maggior parte delle app non di gioco, l'impostazione di una data di scadenza funziona correttamente, perché gli utenti possono sviluppare una buona comprensione dell'app completa. Ecco alcuni scenari di scadenza comuni e le opzioni per gestirle.

  • La licenza di prova scade mentre l'app è in esecuzione

    Se la versione di valutazione dovesse scadere durante l'esecuzione dell'app, l'app può:

    • Non fare nulla.
    • Visualizzare un messaggio al cliente.
    • Chiudi
    • Chiedere al cliente di acquistare l'app.

    La procedura consigliata consiste nel visualizzare un messaggio con una richiesta di acquisto dell'app e, se il cliente lo acquista, continuare con tutte le funzionalità abilitate. Se l'utente decide di non acquistare l'app, chiuderla o ricordargli di acquistare l'app a intervalli regolari.

  • La licenza di valutazione scade prima dell'avvio dell'applicazione

    Se la versione di valutazione scade prima che l'utente avvii l'app, l'app non verrà avviata. Gli utenti visualizzano invece una finestra di dialogo che offre loro la possibilità di acquistare l'app dallo Store.

  • Il cliente acquista l'app mentre è attiva

    Se il cliente acquista l'app mentre è in esecuzione, ecco alcune azioni che l'app può eseguire.

    • Non eseguire alcuna operazione e lasciare che continuino in modalità di valutazione fino a quando non riavviano l'app.
    • Ringraziali per l'acquisto o mostra un messaggio.
    • Abilitare automaticamente le funzionalità disponibili con una licenza completa (o disabilitare le notifiche di sola valutazione).

Se vuoi rilevare la modifica della licenza e intervenire nella tua app, devi aggiungere un gestore eventi per questo come descritto nel passaggio successivo.

Passaggio 2: Inizializzare le informazioni sulla licenza

Quando la tua app viene inizializzata, ottieni l'oggetto LicenseInformation per la tua app, come illustrato in questo esempio. Si presuppone che licenseInformation sia una variabile globale o un campo di tipo LicenseInformation.

Per il momento, si otterranno informazioni sulle licenze simulate usando CurrentAppSimulator anziché CurrentApp. Prima di inviare la versione di rilascio dell'app al Store, è necessario sostituire tutti i riferimenti CurrentAppSimulator nel codice con CurrentApp.

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...
}

Aggiungere quindi un gestore eventi per ricevere notifiche quando la licenza cambia mentre l'app è in esecuzione. La licenza dell'app può cambiare se il periodo di valutazione scade o il cliente acquista l'app tramite uno Store, ad esempio.

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(); 
}

Passaggio 3: Codificare le funzionalità nei blocchi condizionali

Quando viene generato l'evento di modifica della licenza, l'app deve chiamare l'API di licenza per determinare se lo stato della versione di valutazione è cambiato. Il codice in questo passaggio illustra come strutturare il gestore per questo evento. A questo punto, se un utente ha acquistato l'app, è consigliabile fornire feedback all'utente che lo stato delle licenze è cambiato. Potrebbe essere necessario chiedere all'utente di riavviare l'app se è così che è stato codificato. Ma rendere questa transizione il più facile e senza dolore possibile.

Questo esempio mostra come valutare lo stato della licenza di un'app in modo che sia possibile abilitare o disabilitare di conseguenza una funzionalità dell'app.

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.
    }
}

Passaggio 4: Ottenere la data di scadenza della versione di valutazione di un'app

Includere il codice per determinare la data di scadenza della versione di valutazione dell'app.

Il codice in questo esempio definisce una funzione per ottenere la data di scadenza della licenza di valutazione dell'app. Se la licenza è ancora valida, visualizzare la data di scadenza con il numero di giorni rimanenti fino alla scadenza della versione di valutazione.

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
    {
        // ...
    }
}

Passaggio 5: Testare le funzionalità usando chiamate simulate all'API di licenza

Testare ora l'app usando dati simulati. CurrentAppSimulator ottiene informazioni sulle licenze specifiche del test da un file XML denominato WindowsStoreProxy.xml, che si trova in %UserProfile%\AppData\local\packages\<nome del pacchetto>\LocalState\Microsoft\Windows Store\ApiData. Puoi modificare WindowsStoreProxy.xml per modificare le date di scadenza simulate per la tua app e per le relative funzionalità. Testare tutte le possibili configurazioni di scadenza e licenze per assicurarsi che tutto funzioni come previsto. Per altre info, vedi Uso del file di WindowsStoreProxy.xml con CurrentAppSimulator.

Se questo percorso e file non esistono, è necessario crearli, durante l'installazione o in fase di esecuzione. Se si tenta di accedere alla proprietà CurrentAppSimulator.LicenseInformation senza WindowsStoreProxy.xml presente in tale posizione specifica, verrà visualizzato un errore.

Passaggio 6: Sostituire i metodi dell'API di licenza simulata con l'API effettiva

Dopo aver testato l'app con il server licenze simulato e prima di inviare l'app a uno Store per la certificazione, sostituire CurrentAppSimulator con CurrentApp, come illustrato nell'esempio di codice successivo.

Importante

L'app deve usare l'oggetto CurrentApp quando invii l'app a uno Store o non riuscirà a ottenere la certificazione.

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...
}

Passaggio 7: Descrivere il funzionamento della versione di valutazione gratuita per i clienti

Assicurati di spiegare il comportamento dell'app durante e dopo il periodo di valutazione gratuito, in modo che i clienti non vengano sorpresi dal comportamento dell'app.

Per altre info sulla descrizione dell'app, vedi Creare descrizioni di app.