Panoramica delle licenze

Google Play Licensing è un servizio basato sulla rete che consente a un'applicazione di interrogare un server di licenze Google Play attendibile per determinare se l'applicazione è autorizzata per l'utente del dispositivo corrente. Il servizio di licenze si basa sulla capacità del server di licenze di Google Play di determinare se un determinato utente è autorizzato a utilizzare una determinata applicazione. Google Play considera un utente in possesso di licenza se è l'acquirente registrato dell'applicazione.

La richiesta inizia quando l'applicazione invia una richiesta a un servizio ospitato dall'applicazione client Google Play. L'applicazione Google Play invia quindi una richiesta al server di gestione licenze e riceve il risultato. L'applicazione Google Play invia il risultato alla tua applicazione, che può consentire o meno un ulteriore utilizzo dell'applicazione in base alle esigenze.

Nota: se una versione di un'app si trova nei canali di test chiuso o aperto, tutti gli utenti autorizzati a scaricare e installare l'app sono considerati utenti con licenza dell'app. Per ulteriori informazioni, consulta Utilizzare i canali di test per ricevere feedback iniziali preziosi dagli utenti.

Figura 1. La tua applicazione avvia un controllo della licenza tramite la libreria di verifica delle licenze e il client Google Play, che gestisce la comunicazione con il server Google Play.

Nota:in precedenza era possibile testare un'app caricando una versione "bozza" non pubblicata. Questa funzionalità non è più supportata. Devi invece pubblicarla nei canali di test chiusi o aperti. Per ulteriori informazioni, vedi Le app bozza non sono più supportate.

Per identificare correttamente l'utente e determinare lo stato della licenza, il server di gestione delle licenze richiede informazioni sull'applicazione e sull'utente. L'applicazione e il client Google Play funzionano insieme per assemblare le informazioni e il client Google Play le trasmette al server.

Per aiutarti ad aggiungere le licenze alla tua applicazione, l'SDK Android fornisce un insieme scaricabile di origini della libreria che puoi includere nel progetto dell'applicazione: il pacchetto di licenze Google Market. La libreria di verifica delle licenze (LVL) è una libreria che puoi aggiungere alla tua applicazione e che gestisce tutte le comunicazioni relative alle licenze con il servizio di gestione delle licenze di Google Play. Con l'aggiunta di LVL all'applicazione, quest'ultima può determinare il proprio stato di licenza per l'utente corrente semplicemente chiamando un metodo e implementando un callback che riceve la risposta di stato.

La tua applicazione non esegue query direttamente sul server delle licenze, ma chiama il client Google Play tramite IPC remoto per avviare una richiesta di licenza. Nella richiesta di licenza:

  • La tua applicazione fornisce: il nome del pacchetto, un nonce utilizzato in un secondo momento per convalidare qualsiasi risposta dal server e un callback tramite il quale la risposta può essere restituita in modo asincrono.
  • Il client Google Play raccoglie le informazioni necessarie sull'utente e sul dispositivo, come il nome utente dell'Account Google principale del dispositivo, l'IMSI e altre informazioni. Dopodiché, invia la richiesta di controllo della licenza al server per conto della tua applicazione.
  • Il server Google Play valuta la richiesta utilizzando tutte le informazioni disponibili, tentando di stabilire l'identità dell'utente con un livello di confidenza sufficiente. Il server controlla quindi l'identità dell'utente rispetto ai record di acquisto della tua applicazione e restituisce una risposta di licenza, che il client Google Play restituisce alla tua applicazione tramite il callback IPC.

Puoi scegliere quando e con quale frequenza l'applicazione deve controllare la licenza e hai il pieno controllo su come gestisce la risposta, verifica i dati della risposta firmata e applica i controlli dell'accesso.

Tieni presente che durante un controllo della licenza, la tua applicazione non gestisce connessioni di rete né utilizza API correlate alle licenze nella piattaforma Android.

Le risposte alle licenze sono sicure

Per garantire l'integrità di ogni query di licenza, il server firma i dati di risposta della licenza utilizzando una coppia di chiavi RSA condivisa esclusivamente tra il server Google Play e te.

Il servizio di licenze genera una singola coppia di chiavi di licenza per ogni applicazione ed espone la chiave pubblica nella pagina Servizi e API dell'applicazione in Play Console. Devi copiare la chiave pubblica da Play Console e incorporarla nel codice sorgente dell'applicazione. Il server conserva internamente la chiave privata e la utilizza per firmare le risposte di licenza per le applicazioni che pubblichi con quell'account.

Quando la tua applicazione riceve una risposta firmata, utilizza la chiave pubblica incorporata per verificare i dati. L'utilizzo della crittografia con chiave pubblica nel servizio di gestione delle licenze consente all'applicazione di rilevare risposte manomesse o falsificate.

Libreria di verifica delle licenze

L'SDK Android fornisce un pacchetto scaricabile chiamato pacchetto di gestione delle licenze di Google Play, che include la libreria di verifica delle licenze (LVL). LVL semplifica notevolmente il processo di aggiunta delle licenze alla tua applicazione e contribuisce a garantire un'implementazione più sicura e solida per la tua applicazione. La LVL fornisce classi interne che gestiscono la maggior parte delle operazioni standard di una query di licenza, ad esempio il contatto con il client Google Play per avviare una richiesta di licenza e la verifica e la convalida delle risposte. Inoltre, espone interfacce che consentono di inserire facilmente il codice personalizzato per definire la norma di licenza e gestire l'accesso in base alle esigenze dell'applicazione. Le interfacce LVL principali sono:

Policy
L'implementazione determina se consentire l'accesso all'applicazione in base alla risposta della licenza ricevuta dal server e a qualsiasi altro dato disponibile (ad esempio da un server di backend associato all'applicazione). L'implementazione può valutare i vari campi della risposta della licenza e applicare altri vincoli, se necessario. L'implementazione consente anche di gestire la gestione dei controlli delle licenze che generano errori, ad esempio errori di rete.
LicenseCheckerCallback
La tua implementazione gestisce l'accesso all'applicazione in base al risultato della gestione della risposta della licenza da parte dell'oggetto Policy. L'implementazione può gestire l'accesso nel modo necessario, ad esempio mostrando il risultato della licenza nell'interfaccia utente o indirizzando l'utente all'acquisto dell'applicazione (se non è attualmente concessa in licenza).

Per aiutarti a iniziare a utilizzare un Policy, la libreria di verifica delle licenze fornisce due implementazioni Policy complete che puoi utilizzare senza modifiche o adattare alle tue esigenze:

ServerManagedPolicy
Un Policy flessibile che utilizza le impostazioni fornite dal server delle licenze per gestire la memorizzazione nella cache delle risposte e l'accesso all'applicazione mentre il dispositivo è offline (ad esempio quando l'utente è in aereo). Per la maggior parte delle applicazioni, l'utilizzo di ServerManagedPolicy è vivamente consigliato.
StrictPolicy
Un Policy restrittivo che non memorizza nella cache alcun dato di risposta e consente l'accesso all'applicazione solo quando il server restituisce una risposta con licenza.

LVL è disponibile come pacchetto scaricabile dell'SDK Android. Il pacchetto include sia la LVL sia un'applicazione di esempio che mostra come la libreria deve essere integrata nell'applicazione e come l'applicazione deve gestire i dati di risposta, l'interazione con la UI e le condizioni di errore.

Le origini LVL vengono fornite come progetto di libreria Android, il che significa che puoi gestire un unico insieme di origini della libreria e condividerle in più applicazioni. È disponibile anche un ambiente di test completo tramite l'SDK, in modo da poter sviluppare e testare l'implementazione delle licenze nelle tue applicazioni prima di pubblicarle, anche se non hai accesso a un dispositivo fisico.

Requisiti e limitazioni

Google Play Licensing è progettato per consentirti di applicare controlli delle licenze alle applicazioni che pubblichi tramite Google Play. Il servizio non è progettato per consentirti di controllare l'accesso alle applicazioni che non sono pubblicate tramite Google Play o che vengono eseguite su dispositivi che non offrono il client Google Play.

Ecco alcuni punti da tenere presente durante l'implementazione delle licenze nella tua applicazione:

  • Un'applicazione può utilizzare il servizio solo se il client Google Play è installato sul dispositivo host e il dispositivo esegue Android 1.5 (livello API 3) o versioni successive.
  • Per completare un controllo della licenza, il server delle licenze deve essere accessibile tramite la rete. Puoi implementare comportamenti di memorizzazione nella cache delle licenze per gestire l'accesso alla tua applicazione quando non è presente connettività di rete.
  • La sicurezza dei controlli delle licenze della tua applicazione dipende in ultima analisi dalla progettazione dell'implementazione stessa. Il servizio fornisce i blocchi costruttivi che consentono di verificare in modo sicuro le licenze, ma l'applicazione e la gestione effettive della licenza sono fattori che dipendono da te. Seguendo le best practice descritte nei seguenti documenti, puoi contribuire a garantire la sicurezza della tua implementazione.
  • L'aggiunta di licenze a un'applicazione non influisce sul modo in cui l'applicazione funziona quando viene eseguita su un dispositivo che non offre Google Play.
  • Puoi implementare i controlli delle licenze per un'app senza costi, ma solo se utilizzi il servizio per fornire file di espansione APK.

Sostituzione della protezione dalla copia

Google Play Licensing è un meccanismo flessibile e sicuro per controllare l'accesso alle tue applicazioni. Sostituisce efficacemente il meccanismo di protezione dalla copia (non più supportato) precedentemente offerto su Google Play e offre un potenziale di distribuzione più ampio per le tue applicazioni.

Le licenze ti consentono di passare a un modello basato su licenze applicabile su tutti i dispositivi che hanno accesso a Google Play. L'accesso non è vincolato alle caratteristiche del dispositivo host, ma alla tua applicazione su Google Play (tramite la chiave pubblica dell'app) e alle norme di licenza che definisci. La tua applicazione può essere installata e gestita su qualsiasi dispositivo e su qualsiasi spazio di archiviazione, inclusa la scheda SD.

Sebbene nessun meccanismo di licenza possa impedire completamente qualsiasi utilizzo non autorizzato, il servizio di gestione delle licenze ti consente di controllare l'accesso per la maggior parte dei tipi di utilizzo normale, su tutti i dispositivi compatibili, bloccati o sbloccati.

Per iniziare ad aggiungere le licenze dell'applicazione alla tua applicazione, vai a Configurazione per le licenze.