30

È un problema molto ricercato tra coloro che implementano la fatturazione in-app in Android, ovvero il modo in cui vengono gestiti più account. Se un utente ha più account configurati, quale sarà utilizzato per la fatturazione in-app (in quanto non è possibile consentire all'utente di selezionare un account)? Dopo aver scavato un sacco, paragrafo seguente here sembra spiegarlo ..Informazioni sull'account associate all'installazione di un'applicazione

Nota: Per effettuare acquisti di prova, l'account di prova licenza deve essere sul dispositivo Android dell'utente. Se il dispositivo ha più di un account, l'acquisto verrà effettuato con l'account che ha scaricato l'app. Se nessuno degli account ha scaricato l'app, l'acquisto viene effettuato con il primo account. Gli utenti possono confermare l'account che sta effettuando un acquisto espandendo la finestra di dialogo dell'acquisto.

Creo un payload sviluppatore utilizzando l'account coinvolto nella fatturazione delle app, in modo che possa essere ripristinato correttamente in un secondo momento o su un altro dispositivo. Ma dal momento che Honeycomb, non esiste una cosa come account principale. Un utente può eliminare qualsiasi account, potrebbe essere quello con cui è stata acquistata l'app, nel qual caso verrà utilizzato per la fatturazione il primo account dall'elenco degli account. Ora, se so quale account è stato utilizzato e se si verifica che non è "l'account con cui è stata installata l'app", posso almeno informare l'utente che i seguenti acquisti non verranno ripristinati in seguito.

Quindi, la mia domanda è ..

C'è un modo per trovare quale account è stato utilizzato per scaricare l'applicazione?

Google Play sembra utilizzare queste informazioni. In ogni caso, possiamo interagire con Google Play fino a questo livello?

nota: PackageManager non sembra occuparsi di questo.

+0

interessati alla stessa cosa – Greg

+1

si può registrare l'account che è stato utilizzato prima per fare la primo acquisto o prima aperto? (Non è sicuramente la stessa precisione del Play Store) – Edison

risposta

0

Il mio istinto mi dice di creare la tua combinazione AccountManager e SyncAdapter. Per controllare l'account associato alla fatturazione in-app. Potresti quindi supportare la fusione degli account sul tuo server (se l'utente intraprende un'azione e decide di unire gli account) e gestire la fatturazione alla stessa persona o in base ai loro account. Oltre a ripristinare gli acquisti sullo stesso dispositivo, se lo si desidera consentire. È possibile applicare policy del dispositivo ecc. Utilizzando Google Play Licensing e ad es. DeviceLimiter

Se l'utente elimina il vecchio conto tuo AccountManager e SyncAdapter combo sarebbe creare un nuovo account e l'utente sarebbe poi costretto a unire gli account sul server al fine di ripristinare gli acquisti precedenti e si dovrebbe avere il nuovo "Primary Account "informazioni memorizzate lì.

Come ha detto Edison nei vostri commenti. Ci deve essere un modo per registrare l'account associato al primo acquisto e andare da lì.

Questi sono solo i miei pensieri e spero che potremmo fare un po 'di luce su questo e capire una "migliore pratica" per sostenere questo.

+0

Questo non risolve il problema generale. Ad esempio, nella nostra app abbiamo implementato AccountManager e SyncAdapter che contengono account associati agli utenti sul nostro server. Ogni utente della nostra app può acquistare un abbonamento. Il problema è che vogliamo anche supportare più utenti su un dispositivo (come fa Google nella maggior parte delle loro app). Quindi, come può un utente avere 2 account sulla nostra app sullo stesso dispositivo, con abbonamento su entrambi? Attualmente questo è piuttosto complesso da implementare a causa del sistema di fatturazione implementato da Google Play per quanto riguarda gli account utente. –

+0

Questo è qualcosa che devi gestire usando un supporto lato server. Se la tua app supporta più di un account, hai bisogno di un modo per notificare a un server che ci sono due account "connessi". Quando l'utente acquista un prodotto con IAB, è possibile informare il server che esiste un nuovo acquisto per un determinato account google e si dispone di un modo per estendere l'acquisto anche all'altro account. Questo non è gestito da Google, è un pezzo di logica che devi gestire lato client e server. –

2

Se si desidera ottenere il nome dell'ID della posta conto che è configurato per riprodurre l'account del negozio al momento. Si prega di usarlo. sto mettendo qui solo per nome e-mail, ma è possibile ottenere tutte le informazioni di conto come il tipo, descriptin dal conto oggetto

Pattern emailPattern = Patterns.EMAIL_ADDRESS; 
      Account[] accounts =  AccountManager.get(this).getAccountsByType("com.google"); 
      for (Account account : accounts) { 
       if (emailPattern.matcher(account.name).matches()) { 
        primaryEmailID = account.name; 

       } 
      }