Quale codice di stato della risposta verrà restituito al servizio di fatturazione in-app di Google Play {ice, er} V3 in seguito a una condizione di timeout della rete? Questa uniforme è tra tutte le sue funzioni?Android: quale codice di risposta viene restituito dalla fatturazione V3 in-app dopo il timeout?
risposta
Descriverò i miei risultati qui. Ho provato questo su un AVD con un GP dotato di tutte le funzionalità (GP Store V3.10.10, GP Services 2.0.12, G Services Framework 4.1.2), estraendo la presa dell'host.
- Il metodo
getPurchases()
restituisce un risultato in cache, se possibile (si ricorda che siamo non parlando di una cache al di fuori del Servizio qui, ma un diretta chiamata del getPurchases). Ovviamente, questo significa che quasi sempre si ottiene un risultato memorizzato nella cache tranne quando il servizio viene reinizializzato a causa della perdita di dati locali, un caso che non è molto probabile e spesso non deve essere trattato in modo speciale sul livello di applicazione. - Il metodo
consumePurchase()
restituirà il valore intero 6 (BILLING_RESPONSE_RESULT_ERROR
) dopo un presunto timeout di rete interno di 20 secondi (quindi aggiungere un po 'di tempo finché il codice del risultato non viene visualizzato dal chiamante). Avevo il sospetto che nonostanteBILLING_RESPONSE_RESULT_ERROR
fosse descritto comeFatal error during the API action
perché nessun altro codice di errore avrebbe avuto senso qui; sfortunatamente, la parola fatale è ancora piuttosto inappropriata per una condizione temporanea come un timeout. getSkuDetails()
sembra comportarsi proprio comeconsumePurchase()
. Aggiornamento: È ora disponibile la prova chegetSkuDetails()
può accedere alle informazioni memorizzate nella cache anche all'interno del servizio locale.- Sembra che
getBuyIntent()
funzioni correttamente senza connettività se l'elemento è già noto al servizio. Questo spiega perché Hartok vede una schermata di acquisto GP vuota: non è un problema ottenere un obiettivo di acquisto da IAB V3 senza connettività.
Conclusione: il servizio di fatturazione in-app V3 sembra funzionare con una cache interna e un timeout di connessione al server di 20 secondi. Per gli errori di comunicazione del server che la cache locale non è in grado di risolvere, viene utilizzato il codice di risposta 6.
Quindi cosa succede se la mia cache locale e il server non sono sincronizzati? Ad esempio, ottengo costantemente la finestra di dialogo "Hai già questo articolo", anche se getPurchases non restituisce l'elemento che dice di possedere? – VicVu
@Vee Stai parlando di un'app che hai scritto tu, giusto? In tal caso, usi il codice di esempio di Google? (Suggerimento: non è robusto.) Non sono sicuro di dove venga il dialogo "tu già possiedi questo"; se viene visualizzato dalla parte online di Google Play, probabilmente c'è un problema con la cache dei servizi di Google Play sul tuo dispositivo; cancellare i dati locali di quel servizio. Se il dialogo proviene dal codice di esempio di Google Play IAB, allora sarebbe una storia diversa - per quanto ricordo, fa una cache _additional_ basata sui timestamp di validità. Pubblica più dettagli se necessario. –
@Vee One [la scoperta del codice di esempio di Google Play IAB non è robusta] (http://stackoverflow.com/a/14935976/1856738); si riferisce ad un altro aspetto, ma non mi fiderei del codice che non verifica una condizione di errore così importante. –
- 1. wrapper di fatturazione Android InApp?
- 2. Android v3 fatturazione - nessuna firma
- 3. Fatturazione InApp: java.lang.SecurityException Richiede READ_PHONE_STATE
- 4. Android in app fatturazione v3 con php
- 5. Problema di acquisto InApp Android (-1002: Risposta errata ricevuta)
- 6. Quale dovrebbe essere il payload dello sviluppatore in Android app-fatturazione v3 api?
- 7. API di fatturazione v3 IabHelper NullPointerException
- 8. URLjava.io.IOException: Server codice di risposta HTTP restituito: 411 in JAVA
- 9. android inapp-billing - scopri la versione API
- 10. Il server ha restituito il codice di risposta HTTP: 400
- 11. Fatturazione in-app per Android v3: "Impossibile eseguire l'operazione: queryInventory"
- 12. Fatturazione in-app v3 - Non rilevare il rimborso
- 13. La fatturazione in-app per Android v3 non restituisce il prezzo localizzato corretto (getSkuDetails)
- 14. InApp Acquistata nel Android
- 15. Nell'API di fatturazione della app v3 INAPP_PURCHASE_DATA è nullo in bundle quando onActivityResult viene chiamato
- 16. Codice risposta risposta Http Android
- 17. Ripristina la transazione inapp acquisto android
- 18. Quale (se presente) codice di stato http viene restituito quando manca un tipo MIME?
- 19. visualizza codice HTML di risposta restituito da ajax, Jquery
- 20. App con più utenti in un singolo dispositivo - Inapp Fatturazione Abbonamento
- 21. Backbone anche dopo codice di risposta 200
- 22. Come ottenere il codice di stato HTTP dalla risposta SOAP
- 23. fatturazione in-app Android - restoreTransactionInformation
- 24. InApp Purchase RESTORE_TRANSACTIONS, non riesco a capire il codice
- 25. errore di ricezione java.io.IOException: il server ha restituito il codice di risposta HTTP: 401 per
- 26. Fatturazione in-app v3, bindService() Non è possibile trovare l'intento
- 27. Errore libreria fatturazione Android
- 28. Quale stato viene perso/ripristinato dopo glUseProgram?
- 29. java.io.IOException: il server ha restituito il codice di risposta HTTP: 403 per l'URL
- 30. Errore URLConnection - java.io.IOException: il server ha restituito il codice di risposta HTTP: 400 per l'URL
Ho anche affrontato un problema simile. Si prega di controllare il mio problema. http://stackoverflow.com/questions/16495510/iab-error-you-already-owned-this-item –
@YanLinAung Credo che se uno vede il problema come un "problema analogo" dipende dalla prospettiva. ;) –