Estoy usando StoreKit para compras en la aplicación. Estoy descubriendo que la API es peculiar en su comportamiento cuando el usuario presiona el botón "Cancelar".Manejar transacciones canceladas de IAP
Por ejemplo, si presiono Cancelar en la pantalla "Confirmar la compra de la aplicación de In", recibo una transacción SKPaymentTransactionStateFailed
con error.code == SKErrorPaymentCancelled
como era de esperar.
Pero si presiono Comprar y luego presiono Cancelar, obtengo una transacción Failed
con error.code == 0
. El error.localizedDescription
es "No se puede conectar a iTunes Store", lo cual es claramente una mentira.
Es tentador tratar todas las transacciones Failed
como cancelaciones ignorables, pero también puedo ver claramente que si el dispositivo está fuera de línea en modo avión, recibo una transacción Failed
sin alerta emergente; Realmente debería notificar al usuario para explicar el problema en ese caso.
Veo que MKStoreKit asume que todas las fallas son cancelaciones. MKStoreManager
's failedTransaction
método nunca se llama; MKStoreObserver
siempre llama transactionCanceled
para todas las transacciones Failed
. Los comentarios MKStoreManager.h
recommend no error message para transactionCanceled
, lo cual tiene sentido, pero ¿quién notificará al usuario acerca de Failed
transacciones no canceladas?
¿Cuál es la mejor práctica para manejar estas fallas? ¿Debo tragar errores? ¿Siempre muestra un error, incluso si es redundante?
MKStoreKit 3.5 no distingue entre fallas y cancelaciones. He registrado un problema en github https://github.com/MugunthKumar/MKStoreKit/issues/3 y lo he arreglado en mi fork. –
¡Gracias! He fusionado su solicitud de extracción – Mugunth
Ahora que mi solicitud de extracción se ha fusionado, la última MKStoreKit muestra automáticamente un error en fallas, luego llama a transactionCanceled en el delegado para que los usuarios puedan ocultar el spinner. –