Google Play Licensing è un servizio basato sulla rete che consente a un'applicazione di eseguire query su un server di licenze di Google Play attendibile per determinare se l'applicazione è concessa in licenza all'utente corrente del dispositivo. 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 autorizzato se è un acquirente registrato dell'applicazione.
La richiesta viene avviata quando la tua applicazione invia una richiesta a un servizio ospitato dall'applicazione client Google Play. L'applicazione Google Play invia quindi una richiesta al server di licenze e riceve il risultato. L'applicazione Google Play invia il risultato alla tua applicazione, che può consentire o meno l'ulteriore utilizzo dell'applicazione in base alle esigenze.
Nota: se una versione di un'app è nei canali di test chiusi o aperti, 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 preziosi dagli utenti in anteprima.
![](https://developer.android.google.cn/static/images/google/play/licensing/licensing_arch.png?authuser=3&hl=it)
Figura 1. La tua applicazione avvia un controllo della licenza tramite la Libreria di verifica della licenza e il client Google Play, che gestisce la comunicazione con il server Google Play.
Nota: in precedenza potevi 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, consulta Le app di bozza non sono più supportate.
Per identificare correttamente l'utente e determinare lo stato della licenza, il server delle licenze richiede informazioni sull'applicazione e sull'utente. L'applicazione e il client Google Play collaborano per raccogliere le informazioni, che il client Google Play poi passa al server.
Per aiutarti ad aggiungere le licenze alla tua applicazione, l'SDK Android fornisce un insieme scaricabile di flussi di librerie che puoi includere nel progetto dell'applicazione: il pacchetto Google Market Licensing. 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 licenze di Google Play. Con il livello di licenza aggiunto 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 dello stato.
L'applicazione non esegue query direttamente sul server di licenze, ma chiama il client Google Play tramite IPC remoto per avviare una richiesta di licenza. Nella richiesta di licenza:
- L'applicazione fornisce: il nome del pacchetto, un nonce che viene successivamente utilizzato per convalidare qualsiasi risposta del 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. Quindi, invia la richiesta di controllo della licenza al server per conto della tua applicazione.
- Il server di Google Play valuta la richiesta utilizzando tutte le informazioni disponibili, tentando di stabilire l'identità dell'utente con un livello di certezza sufficiente. Il server controlla quindi l'identità dell'utente in base ai record di acquisto per la tua applicazione e restituisce una risposta relativa alla licenza, che il client Google Play restituisce alla tua applicazione tramite il callback IPC.
Puoi scegliere quando e con quale frequenza la tua applicazione deve controllare la propria licenza e hai il pieno controllo su come gestisce la risposta, verifica i dati della risposta firmata e applica i controlli di accesso.
Tieni presente che durante un controllo della licenza, la tua applicazione non gestisce connessioni di rete né utilizza API correlate alla licenza nella piattaforma Android.
Le risposte relative alle licenze sono sicure
Per garantire l'integrità di ogni query sulla licenza, il server firma i dati della 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 applicazióne 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 la chiave privata internamente e la utilizza per firmare le risposte relative alle licenze per le applicazioni che pubblichi con quell'account.
Quando l'applicazione riceve una risposta firmata, utilizza la chiave pubblica incorporata per verificare i dati. L'utilizzo della crittografia con chiave pubblica nel servizio di licenza consente all'applicazione di rilevare le risposte che sono state manomesse o sono contraffatte.
Libreria di verifica delle licenze
L'SDK Android fornisce un pacchetto scaricabile chiamato pacchetto di licenze del Google Market, che include la libreria di verifica della licenza (LVL). LVL semplifica notevolmente il processo di aggiunte delle licenze alla tua applicazione e contribuisce a garantire un'implementazione più sicura e solida per la tua applicazione. LVL fornisce classi interne che gestiscono la maggior parte delle operazioni standard di una query sulla licenza, ad esempio il contatto del client Google Play per avviare una richiesta di licenza e la verifica e la convalida delle risposte. Inoltre, espone interfacce che ti consentono di collegare facilmente il tuo codice personalizzato per definire i criteri di licenza e gestire l'accesso in base alle esigenze della tua 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 eventuali altri dati disponibili (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 inoltre di gestire la gestione dei controlli delle licenze che generano errori, ad esempio gli 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 in qualsiasi modo necessario, ad esempio visualizzando il risultato della licenza nell'interfaccia utente o indirizzando l'utente all'acquisto dell'applicazione (se non è attualmente in possesso di una licenza).
Per aiutarti a iniziare a utilizzare un Policy
, LVL fornisce due implementazioni completamente complete di Policy
che puoi utilizzare senza modifiche o adattare alle tue esigenze:
ServerManagedPolicy
- Un
Policy
flessibile che utilizza le impostazioni fornite dal server di licenze per gestire la memorizzazione nella cache delle risposte e l'accesso all'applicazione quando il dispositivo è offline (ad esempio quando l'utente è in aereo). Per la maggior parte delle applicazioni, l'uso diServerManagedPolicy
è vivamente consigliato. StrictPolicy
- Un
Policy
restrittivo che non memorizza nella cache i dati di risposta e consente all'applicazione di accedere solo quando il server restituisce una risposta con licenza.
LVL è disponibile come pacchetto scaricabile dell'SDK Android. Il pacchetto include sia l'LVL stesso sia un'applicazione di esempio che mostra come deve essere integrata la libreria con l'applicazione e come deve gestire i dati di risposta, l'interazione con l'interfaccia utente e le condizioni di errore.
I sorgenti LVL vengono forniti come progetto di libreria Android, il che significa che puoi gestire un unico insieme di sorgenti della libreria e condividerle su 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 non pubblicate tramite Google Play o che vengono eseguite su dispositivi che non offrono il client Google Play.
Ecco alcuni punti da tenere presenti 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 c'è connettività di rete.
- La sicurezza dei controlli delle licenze della tua applicazione si basa in ultima analisi sul design dell'implementazione stessa. Il servizio fornisce gli elementi di base che ti 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 riportate nei seguenti documenti, puoi contribuire ad assicurare la sicurezza dell'implementazione.
- L'aggiunta di licenze a un'applicazione non influisce sul funzionamento dell'applicazione 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 per la protezione dalla copia
La concessione in licenza di Google Play è un meccanismo flessibile e sicuro per controllare l'accesso alle tue applicazioni. Sostituisce efficacemente il meccanismo di protezione anticopia (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. L'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 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 app, vai a Configurazione per le licenze.