Ho un'app sul mercato che costa $ 0,99. Voglio implementare la fatturazione in-app in modo da poterlo offrire gratuitamente con un'opzione per sbloccare determinate funzionalità a un prezzo. Ho già modificato il codice per consentirlo. La domanda è ... come potrei contrassegnare le oltre 1000 persone che hanno già acquistato l'app come se lo avessero acquistato e sbloccare tutte le funzionalità?Passaggio da fatturazione a pagamento con fatturazione in-app
risposta
Potresti riuscire a modificarlo se stai utilizzando una sorta di archivio permanente.
Per SharedPreferences, alla prima esecuzione, eseguire un controllo per una delle preferenze utilizzando SharedPreferences.contains()
. Se lo contiene, l'app deve essere già stata installata. In caso contrario, imposta un'altra preferenza che contrassegna l'utente come nuovo (gratuito) e ne imposta ancora uno in modo che non esegua il controllo ogni volta.
Questo potrebbe funzionare solo se la preferenza non ha un valore "predefinito", non sono del tutto sicuro che l'impostazione di un valore predefinito in xml la contrassegnerà come contenuta.
Si potrebbe fare qualcosa di simile se si dispone di asset trasferiti su SD o di qualsiasi altra configurazione simile. Basta controllare per vedere se è già fatto prima di farlo la prima volta.
Se si utilizza un DB SQLite, è possibile incrementare la versione del DB e contrassegnarlo come "pagato" in onUpgrade()
se proveniente dalla versione corrente (o precedente).
Come ho detto, è un trucco, ma non conosco alcun modo "ufficiale" per verificare se un'installazione di app è un aggiornamento o un'installazione iniziale. Ci sono alcune insidie qui, però. Ad esempio, se un precedente cliente pagato si disinstalla completamente prima di installare la nuova versione o se si trova su un nuovo dispositivo ...
Questo non funzionerà. Si consideri il caso in cui l'utente abbia già avuto la versione a pagamento, ma in seguito l'ha rimosso. Ora vuole installare la nuova versione IAB. Ovviamente il tuo metodo lo classifica come un uso iniziale mentre ha già pagato per questo. – abedfar
@abedfar Ho menzionato esplicitamente quel caso nella mia ultima frase. Come ho detto, si tratta di un trucco, e mentre le cose potrebbero essere cambiate negli ultimi tre anni, credo che non ci sia ancora un buon modo per fare questo "giusto" per tutti gli utenti. – Geobits
hai ragione. Pensi che cambiando la mia app a pagamento potrò comunque recuperare il server di Google Licensing per distinguere gli utenti già pagati (cosa che sto facendo ora nell'app a pagamento)? Personalmente dubito perché non appena cambio la mia app a pagamento gratuita, la verifica della Lic diventa priva di significato e Google dovrebbe restituire true per tutte le query Lic. – abedfar
che tipo di app hai? È un'app offline? O usi internet con alcuni servizi che offri? Gli utenti creano un account o qualcosa per usare la tua app? –
È un'app offline. Nessun account utente o altro. – Roger