¿Alguien tiene alguna idea sobre cómo restablecer y / o borrar la zona de pruebas de compra en la aplicación de iOS?
Tengo una aplicación que estoy probando con la caja de arena y me gustaría probar nuevas compras sin tener que crear un nuevo usuario de prueba cada vez que compro algo.
Si no hago esto, entonces (por supuesto) siempre recibo un mensaje de que el artículo de compra en la aplicación ya se compró cuando hago clic en el botón de compra de mi aplicación.
fuente
+
Las direcciones de correo electrónico ya no se pueden utilizar para registrarse en Apple ID.No puedes hacer esto, hasta donde yo sé. El backend de la caja de arena funciona como una cuenta real: una vez que se compra, se compra (y por lo tanto, puede probar la restauración). Debería hacer la mayor parte de su desarrollo con el material de la tienda eliminado, y luego, cuando llegue a probarlo de verdad, solo espere crear varias cuentas de prueba.
fuente
SKPaymentTransactionStateRestored
regresa de la tienda de aplicaciones, en lugar deSKPaymentTransactionStatePurchased
. Dado que aquí no está usando dinero real, para todos los efectos,SKPaymentTransactionStateRestored
es 100% equivalente a lasSKPaymentTransactionStatePurchased
pruebas. Restablecer el estado de su aplicación a "no comprado" realmente depende de usted (simplemente elimine la entrada de llavero relevante o lo que esté usando para almacenar en caché ese "usuario compró X")Tengo 2 artículos de compra en la aplicación. 1 para producción. y el otro para probar. cuando necesito "borrar", elimino el elemento de la aplicación y creo uno nuevo (15 segundos en iTunes Connect y 1 segundo para cambiar la identificación del producto en el código)
Si no necesito probar "nuevo usuario", uso la producción en el elemento de la aplicación.
fuente
Bueno, técnicamente no lo necesitas.
En caso de conseguirlo
SKPaymentTransactionStateRestored
, es 100% equivalente a que la tienda de aplicaciones verifique al usuario y le conceda la compra. Tengo un interruptor como:La cuestión de tener la lógica de su aplicación / recuperar la compra es simple: si está almacenando en caché las compras en el llavero, elimine su llavero. Si lo está haciendo de otra manera, simplemente cambie el estado de su aplicación local para simular que el usuario nunca la compró antes. El cuadro de diálogo de solicitud de compra sigue siendo exactamente el mismo, la única diferencia es que cuando pulsas SÍ, te da en
SKPaymentTransactionStateRestored
lugar deSKPaymentTransactionStatePurchased
.fuente
La eliminación y reinstalación de la aplicación también funciona para las pruebas de sandbox. Depende de la aplicación, obviamente, pero estoy probando una aplicación basada en suscripción que solo compra durante el registro en este momento, por lo que ha sido la solución más fácil.
fuente
Echa un vistazo a SimStoreKit . Es una "versión simulada del StoreKit del iPhone, para probar la interfaz de usuario de la tienda en el iPhone Simulator, o incluso en el dispositivo sin tener que configurar IAP en Connect".
SimStoreKit almacena las compras en los valores predeterminados del usuario bajo la clave
ILSimSKTransactions
. Entonces, para borrar todas las compras que puede hacer:En el simulador, simplemente puede eliminar su aplicación e instalarla nuevamente.
He utilizado con éxito SimStoreKit para depurar el frente de la tienda de mi aplicación antes de probar con la caja de arena. La belleza de esta biblioteca es que se puede configurar para usar los mismos nombres de clase que el marco StoreKit real (haciendo
#define ILSimReplaceRealStoreKit 1
antes de hacerlo#include <ILSimStoreKit.h>
).En los archivos de origen donde necesito acceder a StoreKit, incluyo este archivo de encabezado:
Esto tiene el efecto de usar SimStoreKit cuando ejecuto en el simulador y el StoreKit real cuando ejecuto en el dispositivo.
fuente
Alternativamente, para crear una solución de múltiples usuarios de prueba, puede crear múltiples pruebas en compras de aplicaciones en iTunes Connect, entonces no necesita cambiar una cuenta de usuario.
fuente
Simplemente siga usando la misma cuenta de prueba, restaurando compras en lugar de completar otras nuevas. Después de todo, ya sea que inicie una nueva compra o restaure una anterior, SU APLICACIÓN hará lo mismo (al menos inicialmente, tal vez la interfaz de usuario se actualice de manera diferente al finalizar). Apple es la gente que maneja las cosas de manera diferente en esas diferentes situaciones, no se preocupe por eso.
Coloque su lógica de entrega en el caso SKPaymentTransactionStateRestored dentro de la implementación de este método para la prueba:
Luego, asegúrese de incluir esa lógica de entrega en el caso SKPaymentTransactionStatePurchased.
Al final, debido a que la mayoría de nosotros somos obsesivos-compulsivos en diversos grados, haga una prueba final con un relato nuevo (no es gran cosa hacer un segundo con absoluta certeza).
Lo último a tener en cuenta: considere la posición de Apple. Si hubiera un problema con los desarrolladores que tuvieran que perder tiempo creando decenas o cientos de cuentas para probar IAP a fondo, habrían resuelto el problema. No hay ningún problema.
fuente