2014-07-21 14 views
7

Come posso ottenere l'e-mail/ID dell'account Google Play associato a un'app?Android: ottieni l'account Google Play associato alla fatturazione in-app

Ho bisogno di questo per mostrare all'utente quale account è preso in considerazione per la fatturazione in-app. Per quanto ho capito, la fatturazione in-app di Google utilizza l'account che ha scaricato l'app, ma ho bisogno di trovare un modo per visualizzarlo all'utente, nel caso in cui abbia configurato più di un account.

Ciò impedirebbe agli utenti di sporgere reclamo non avendo riconosciuto i loro acquisti, quando hanno un altro account associato all'app.

risposta

0

Non penso che ci sia un modo per rilevare l'account che l'utente utilizzerà durante un acquisto in app.

L'unica cosa che posso pensare è interrogare lo AccountManager per verificare se l'utente ha più di un account Google e mostrare un messaggio dicendo qualcosa come: "Hai più di un account Google, assicurati di utilizzare il corretto uno prima di procedere ". L'unico problema con questo approccio è che è necessario aggiungere le autorizzazioni necessarie per eseguire questa query.

0

Non c'è modo di conoscere l'e-mail che l'utente sta acquistando.

Anche utilizzando lo Account Manager, viene restituito un intero elenco di tutte le e-mail.

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ 
Account[] accounts = AccountManager.get(context).getAccounts(); 
for (Account account : accounts) { 
    if (emailPattern.matcher(account.name).matches()) { 
     String possibleEmail = account.name; 
     ... 
    } 
} 

Non è così semplice come scegliere il primo della lista, in quanto l'utente può acquistare con qualsiasi e-mail associato al telefono. È possibile utilizzare lo AbstractAccountAuthenticator#getAccountRemovalAllowed per sapere che l'account non può essere cancellato e sapere quale è la posta principale (dato che non è possibile eliminare la posta principale), ma anche questo può cambiare, l'utente può cambiare la posta principale in qualsiasi momento.

Mi piacerebbe sapere come farlo, ma purtroppo non c'è modo. Nel mio caso, non è denaro essenziale, quindi mi mando come "payload" tutti gli account di posta elettronica del telefono concatenati e tutti questi che consentono di sbloccare contenuti premium nella mia applicazione, cosa posso perdere delle vendite? È probabile, ma preferisco questo a un punteggio negativo nel mercato perché un utente acquista contenuti premium e non può essere sbloccato perché ho scelto la posta sbagliata.

0

In realtà non è possibile ottenere da Google Play l'account che ha scaricato l'applicazione. Il suggerimento è di creare l'account dell'utente dell'applicazione personale e consentire solo gli acquisti dopo la registrazione dell'utente (è possibile utilizzare qualsiasi metodo si desideri utilizzare).

E, per ciascun acquisto, il collegamento viene eseguito con il backup sull'account dell'utente. E, se gli utenti accedono a un altro dispositivo utilizzando un altro account Google, se accede alla tua applicazione utilizzando l'account giusto, l'accesso sarà garantito.

Google Play team è consapevole che questa non è la soluzione migliore e, come ho commentato on this question, stiamo migliorando l'API e non appena avremo un aggiornamento, posterò anche qui.