5

ci sono applicazioni (come https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher) che sono liberi, ma le cui caratteristiche pagato può essere attivata con l'acquisto di un'altra applicazione (in questo caso, questo https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher.prime)Come funziona l'acquisto di un'app per abilitare le funzionalità a pagamento di un'altra app?

Come funziona?

La mia ipotesi è che le app gratuite lanciano un Intent esplicito e possono rilevare se l'app è presente tramite una struttura try/catch. Lo svantaggio di questo è che questo potrebbe essere facilmente aggirato da qualcuno che crea un'app con lo stesso nome di pacchetto e specifica tutti i possibili filtri Intent.

È così che funziona, o è un altro modo?

risposta

0

Il modo più semplice è utilizzare startActivityForResult(...) dall'app A contro un'attività di app B, che deve essere configurata con un IntentFilter per poter essere utilizzata da un'app esterna. All'interno del B chiamato attività puoi anche controllare chi sta chiamando con getCallingActivity(). È possibile trovare un esempio here.

Prima di iniziare l'attività, è possibile verificare che B sia installato (utilizzando il PackageManager) oppure avviare l'attività e rilevare l'eccezione.

Nell'attività chiamata, è possibile verificare la firma del pacchetto chiamante utilizzando il metodo the PackageManager.checkSignature(String,String). Passa il nome del pacchetto di A e B e se la firma corrisponde, esegui la logica.

+0

Può essere aggirato se creo un'app con lo stesso nome di pacchetto e che risponda allo stesso intento? Non pubblicare, ma solo per installare localmente per abilitare le altre funzionalità dell'app. – zundi

+0

Aggiornamento della risposta –

+0

'PackageManager.checkSignature()' era quello che stavo cercando. Restituisce 'true' se entrambi sono firmati dallo stesso certificato, il che significa che non è facilmente aggirabile, anche se hai il codice sorgente dell'altro app. Grazie – zundi

2

Ci sono vari modi per farlo. Un modo è di interrogare un fornitore di contenuti che sarà protetto con un permesso speciale.

Ho rilasciato molto tempo fa su Github una libreria che aiuta a fare questo: Android Unlocker Library.

Questa è una buona opzione se si hanno a che fare con dispositivi esterni all'ecosistema di Google, tuttavia, da un'esperienza di sviluppo, gli acquisti in-app offrono un'esperienza utente molto migliore (e quindi aumentano le vendite) secondo me.

+0

Quale permesso speciale? – zundi

Problemi correlati