Comprador de comprobación de compra de Android en la compra sin conexión

Tengo implementar en la compra de aplicaciones (administrado) en mi aplicación utilizando servicios de facturación cuando el usuario quiere comprar el artículo que hará la solicitud de compra que requiere de Internet, incluso si el usuario ya ha comprado el artículo. Así que para la conveniencia del usuario estoy haciendo que si el usuario ha comprado el elemento, a continuación, un valor se guardará en pref compartido. Y cuando cada vez que el usuario haga clic en ese elemento en particular, a continuación, se comprobará pref compartida. Valor que cualquier usuario ha comprado el artículo o no si no entonces va para la petición de compra otra cosa le muestra el artículo. Mi pregunta es que es seguro? O tengo que hacer otra cosa?

Esto no es seguro. Me desanimaría de implementar tal cheque de esta manera. Usted debe preferir ir para el enfoque estándar y utilizar el método getPurchases () . Puede llamar a este método en cualquier momento (incluso sin conexión) y si un usuario tiene compras, se devolverán de ese método. Aquí hay un ejemplo de código:

IInAppBillingService service; // initialize it first Bundle response = service.getPurchases(3, "you app package", "inapp", null); int responseCode = response.getInt(KEY_RESPONSE_CODE); if (responseCode == RESPONSE_OK) { ArrayList<String> purchases = response.getStringArrayList(KEY_INAPP_PURCHASE_ITEM_LIST); ... } 

De la maldición que necesita para verificar que las compras se firman con el certificado correcto y el estado de compra no se cancela. Pero esto es mucho más seguro que almacenar datos en propiedades compartidas. Otra ventaja de este enfoque es que después de que el usuario vuelva a instalar la aplicación, todas las compras también estarán disponibles automáticamente allí.

Ejemplo completo de esta técnica está dentro de la aplicación de prueba TrivialDrive y es un trabajo para mí, pero estoy pensando en el caso fuera de línea. La aplicación de Google Play almacena en caché las compras y da respuestas a las getPurchases (3, "pkg", "inapp", null) sin conexión, pero esto funciona infinitamente o hay algo como un tiempo de espera para esta caché …

  • Servicios de Google Play que no funcionan en el emulador de Android API Nivel 11
  • Google Play no muestra el número correcto de descargas para mi aplicación
  • Android: la aplicación se bloquea en dispositivos Pre-Lollipop
  • Android: Google reproduce los servicios de juegos error de conexión (java.lang.IllegalStateException: GoogleApiClient debe estar conectado.)
  • Serializar a una matriz de bytes arrojó una IOException (nunca debería suceder)
  • Los servicios de juegos no funcionan
  • LocationRequest desplazamiento más pequeño y precisión
  • ¿Qué sucede cuando "quito" una aplicación de pago de Apple y Android App Store?
  • Android ActivityRecognition no llamando aHandleIntent
  • No se pudo encontrar com.google.android.gms: play-services: 5.0.77
  • Ejecución de Google Maps v2 en el emulador de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.