android - traduccion - Desacoplamiento de facturación en la aplicación de la actividad
in app purchase traduccion (2)
Todos los tutoriales que pude encontrar en Android In-App-Billing V3 suponen que tiene una sola actividad que maneja todo lo relacionado con la facturación. En mi caso, hay múltiples actividades que necesitarán acceso a la facturación. ¿Cómo manejaría tal cosa de manera más elegante?
Un problema de ejemplo con el que tropecé: cuando trabaja con las clases de ayuda de facturación de Google, siempre entrega la actividad actual como parámetro. Las llamadas posteriores (por ejemplo, onActivityResult) se invocan en esa actividad. Pero, ¿y si la actividad activa cambia todo el tiempo? ¿Tengo que cerrar y volver a inicializar la facturación todo el tiempo?
Piense un poco fuera del cuadro de ejemplo. No está relacionado únicamente con su problema, sino que es general.
Utilizaría un sistema de notificación porque tiene 1 editor y muchos oyentes necesarios (su caso 2). Uno de los métodos más feos puede ser (pero el más rápido de escribir):
- hacer una actividad falsa (incluso invisible, lo que sea)
- copiar y pegar el código de ejemplos que funciona allí
- piratee un poco ese código de trabajo y agregue oyentes, que toma los parámetros como su actividad real
- notificar cuando sea necesario sus instancias, cuando sea necesario
5to voto positivo si ayudó o gustó :)
Pero, ¿y si la actividad activa cambia todo el tiempo? ¿Tengo que cerrar y volver a inicializar la facturación todo el tiempo?
No hay nada malo en eso. Conectarse a un servicio es muy rápido. Lo más importante es ser capaz de manejar la retrollamada a ActionResult () cuando la actividad comience nuevamente.
¿Cómo manejaría tal cosa de manera más elegante?
No estoy seguro de qué tipo de aplicación escribes. Si es un juego, lo más probable es que consista en una sola actividad y no haya ningún problema de todos modos. Si se trata de otro tipo de aplicación con múltiples actividades, entonces, en mi opinión, es una buena idea tener una sola actividad, donde el usuario pueda ver todos los productos integrados en la aplicación (comprados y para comprar). Esto es como una actividad de "tienda interna". Esta actividad se puede conectar al servicio de facturación. Otras actividades deben enviarse a la "tienda interna" donde el usuario puede leer más acerca de un producto integrado en la aplicación y decidir comprarlo. Me parece muy conveniente.
Otro enfoque sería implementar su lógica de facturación en un Fragmento que se puede reutilizar en cada actividad. Solo debe sobrescribir onActivityResult()
y reenviar el resultado a ese Fragment. Así es como lo implementé en mi aplicación.
Espero que esto ayude.