Abilitare gli acquisti di prodotti in-app

Indipendentemente dal fatto che l'app sia gratuita o meno, è possibile vendere contenuti, altre app o nuove funzionalità dell'app (ad esempio sbloccare il livello successivo di un gioco) direttamente all'interno dell'app. Qui mostreremo come abilitare questi prodotti nell'app.

Importante

Questo articolo illustra come usare i membri dello spazio dei nomi Windows.ApplicationModel.Store per abilitare gli acquisti di prodotti in-app. 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, quali i componenti aggiuntivi di consumo gestiti dallo Store e le sottoscrizioni, ed è progettato per essere compatibile con 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 usato solo nei progetti destinati a Windows 10 Anniversary Edition (10.0; Build 14393) o versione successiva in Visual Studio. Per ulteriori informazioni sull'abilitazione degli acquisti di prodotti in-app usando lo spazio dei nomi Windows.Services.Store, vedere questo articolo.

Nota

I prodotti in-app non possono essere offerti da una versione di valutazione di un'app. I clienti che usano una versione di valutazione dell'app possono acquistare un prodotto in-app solo se acquistano una versione completa dell'app.

Prerequisiti

  • Un'app di Windows in cui aggiungere funzionalità che i clienti possono acquistare.
  • La prima volta che si scrive il codice di nuovi prodotti in-app e li si testano, è necessario usare l'oggetto CurrentAppSimulator anziché l'oggetto CurrentApp. In questo modo è possibile verificare la logica di licenza usando chiamate simulate al server licenze anziché chiamare il server live. A tale scopo, è necessario personalizzare il file denominato WindowsStoreProxy.xml in %userprofile%\AppData\local\packages\<nome pacchetto>\LocalState\Microsoft\Windows Store\ApiData. Il simulatore di Microsoft Visual Studio crea questo file la prima volta che si esegue l'app, in alternativa è possibile caricarne uno personalizzato in fase di runtime. Per ulteriori informazioni, vedere Uso del file WindowsStoreProxy.xml con CurrentAppSimulator.
  • Questo argomento fa riferimento anche agli esempi di codice forniti nell'esempio di Store. Questo esempio è un ottimo modo per acquisire esperienza pratica con le diverse opzioni di monetizzazione fornite per le app UWP (Universal Windows Platform).

Passaggio 1: inizializzare le informazioni sulla licenza per l'app

Al momento dell'inizializzazione dell'app, ottenere l'oggetto LicenseInformation per l'app inizializzando CurrentApp o CurrentAppSimulator per abilitare gli acquisti di un prodotto in-app.

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

Passaggio 2: aggiungere le offerte in-app all'app

Per ogni funzionalità che si desidera rendere disponibile tramite un prodotto in-app, creare un'offerta e aggiungerla all'app.

Importante

È necessario aggiungere all'app tutti i prodotti in-app che si desidera presentare ai clienti prima di inviare l'app allo Store. Se si desidera aggiungere successivamente nuovi prodotti in-app, è necessario aggiornare l'app e inviare nuovamente una nuova versione.

  1. Creare un token dell'offerta in-app

    È possibile identificare ogni prodotto in-app presente nell'app tramite un token. Questo token è una stringa che si definisce e usa nell'app e nello Store per identificare un prodotto in-app specifico. Assegnargli un nome univoco (per l'app) e significativo per poter identificare rapidamente la funzionalità corretta che rappresenta al momento della scrittura del codice. Di seguito sono riportati alcuni esempi di nomi:

    • "SpaceMissionLevel4"
    • "ContosoCloudSave"
    • "RainbowThemePack"

Nota

Il token dell'offerta in-app che si usa nel codice deve corrispondere al valore dell'ID prodotto che si specifica quando si definisce il componente aggiuntivo corrispondente per l'app nel Centro per i partner.

  1. Scrivere il codice della funzionalità in un blocco condizionale

    È necessario inserire il codice per ogni funzionalità associata a un prodotto in-app in un blocco condizionale che verifica se il cliente ha una licenza per usare tale funzionalità.

    Di seguito è riportato un esempio che mostra come è possibile scrivere il codice di una funzionalità del prodotto denominata featureName in un blocco condizionale specifico della licenza. La stringa featureName è il token che identifica in modo univoco questo prodotto nell'app ed è anche usata per identificarlo nello Store.

    if (licenseInformation.ProductLicenses["featureName"].IsActive)
    {
        // the customer can access this feature
    }
    else
    {
        // the customer can' t access this feature
    }
    
  2. Aggiungere l'interfaccia utente per questa funzionalità

    L'app deve inoltre fornire un modo in cui i clienti acquistano il prodotto o la funzionalità offerta dal prodotto in-app. Non possono acquistarli tramite lo Store nello stesso modo in cui acquistano l'app completa.

    Di seguito è illustrato come verificare se l'utente possiede già un prodotto in-app e, in caso contrario, visualizzare la finestra di dialogo mediante cui può effettuare l'acquisto. Sostituire il commento "show the purchase dialog" con il codice personalizzato per la finestra di dialogo di acquisto (ad esempio una pagina con un pulsante descrittivo quale "Compra quest'app!").

    async void BuyFeature()
    {
        if (!licenseInformation.ProductLicenses["featureName"].IsActive)
        {
            try
            {
                // The customer doesn't own this feature, so
                // show the purchase dialog.
                await CurrentAppSimulator.RequestProductPurchaseAsync("featureName", false);
    
                //Check the license state to determine if the in-app purchase was successful.
            }
            catch (Exception)
            {
                // The in-app purchase was not completed because
                // an error occurred.
            }
        }
        else
        {
            // The customer already owns this feature.
        }
    }
    

Passaggio 3: modificare il codice di test nelle chiamate finali

Questo è un passaggio semplice: modificare ogni riferimento a CurrentAppSimulator in CurrentApp nel codice dell'app. Non è più necessario fornire il file WindowsStoreProxy.xml file, quindi rimuoverlo dal percorso dell'app (sebbene potrebbe essere opportuno salvarlo per riferimento quando si configura l'offerta in-app nel passaggio successivo).

Passaggio 4: configurare l'offerta di prodotto in-app nello Store

Nel Centro per i partner, andare all'app e creare un componente aggiuntivo che corrisponda all'offerta di prodotto in-app. Definire l'ID prodotto, il tipo, il prezzo e altre proprietà per il componente aggiuntivo. Assicurarsi di configurarlo in modo identico alla configurazione impostata in WindowsStoreProxy.xml durante il test.

Nota

Il token dell'offerta in-app che si usa nel codice deve corrispondere al valore dell'ID prodotto specificato per il componente aggiuntivo corrispondente nel Centro per i partner.

Osservazioni:

Se si è interessati a fornire ai clienti opzioni di prodotti in-app di consumo (elementi che possono essere acquistati, usati e poi acquistati di nuovo se lo si desidera), passare all'argomento Abilitare acquisti di prodotti in-app di consumo.

Se è necessario usare le ricevute per verificare che l'utente abbia effettuato un acquisto in-app, assicurarsi di consultare Usare le ricevute per verificare gli acquisti di prodotti.