Subscriptions 101: learn how to get +23% app revenue Read more

Las compras dentro de la aplicación de iOS, parte 5: lista de códigos SKError y cómo manejarlos

Andrey Kyashkin

September 6, 2022

13 min read

Table of Contents

62fdf1ee3ac056e02f757705 jp android tutorial 1 configuration 9

En este post, abordaré los SKErrors: qué problemas implican y qué hacer con ellos. Para cada error, trabajaremos tres aspectos: por qué se produce, cómo manejarlo y qué mensaje mostrar en la notificación de error.

SKError.Code.unknown, código 0

Qué significa. Se ha producido un error por un motivo desconocido.

Cómo solucionarlo. No es necesaria ninguna acción por parte de los desarrolladores. Este error también se produce en una solicitud al intentar obtener productos cuando se utiliza el simulador de iOS 14 y superior. En este caso, para obtener un producto, utiliza la prueba local StoreKit o un dispositivo/emulador real con la versión de iOS inferior a iOS 14.

Qué mensaje mostrar. Lo sentimos, la compra no está disponible por una razón desconocida. Inténtalo de nuevo más tarde

6129480992e3bf3eee2b6498 6zrtcxb0l aojbaykonkyks ytivmmkytagofibbph6zuprqv 4p1h8bjunif2yqzsush8mv26sehrxknqi ajrtygdos2nrly shjoisglkplfpgmxsnc

SKError.Code.clientInvalid, código 1

Qué significa. El usuario no puede realizar una compra. Por ejemplo, un niño intenta comprar algo cuando la función de control parental del dispositivo está activada.

Cómo solucionarlo. No es necesaria ninguna acción por parte de los desarrolladores.

Qué mensaje mostrar. No se puede completar la compra. Por favor, cambia tu cuenta o dispositivo.

SKError.Code.paymentCancelled, código 2

Qué significa. El usuario llegó a la pantalla de pago, pero cambió de opinión sobre la compra y pulsó “cancelar”.

Cómo solucionarlo. Desde un punto de vista técnico, no se ha producido ningún error y, en este caso, no hay que hacer nada. Desde el punto de vista del marketing, puedes seguir trabajando con ese usuario, por ejemplo, ofreciéndole un descuento.

Qué mensaje mostrar. Aquí tienes dos opciones. La más fácil es no mostrar nada. Sin embargo, también puedes intentar recuperar al usuario con un mensaje como este “Has cancelado tu compra. ¿Estás interesado en probar una suscripción con descuento?”

SKError.Code.paymentInvalid, código 3

Qué significa. Por alguna razón, el pago ha fallado: la tarjeta había caducado o no había fondos suficientes para esta compra.

Cómo solucionarlo. No es necesaria ninguna acción por parte de los desarrolladores.

Qué mensaje mostrar. Tu compra ha sido rechazada. Por favor, comprueba los detalles del pago y asegúrate de que hay fondos suficientes en tu cuenta.

SKError.Code.paymentNotAllowed, código 4

Qué significa. Probablemente, esta tarjeta tiene algunas restricciones de compra disponibles: se establecen límites o la función de compra online no está disponible.

Cómo solucionarlo. No es necesaria ninguna acción por parte de los desarrolladores.

Qué mensaje mostrar. La compra no está disponible con el método de pago seleccionado. Por favor, asegúrate de que tu método de pago te permite realizar compras online.

SKError.Code.storeProductNotAvailable, código 5

Qué significa. El usuario está intentando comprar un producto que no está disponible para la región en la que se utiliza esta tienda.

Cómo solucionarlo. El desarrollador debe comprobar la disponibilidad de los productos en la tienda y la región del usuario. Para ello, puedes utilizar SKStorefront.

Qué mensaje mostrar. Este producto no está disponible en tu región. Por favor, cambia la tienda y vuelve a intentarlo.

SKError.Code.cloudServicePermissionDenied, código 6

Qué significa. El usuario no dio acceso a la información de su servicio en la nube.

Cómo solucionarlo. No es necesaria ninguna acción por parte de los desarrolladores.

Qué mensaje mostrar. Para ser sincero, nunca me he encontrado con un error semejante. En realidad, puedes escribir simplemente que la compra fue rechazada.

SKError.Code.cloudServiceNetworkConnectionFailed, código 7

Qué significa. El dispositivo no estaba conectado a Internet al realizar la compra.

Cómo solucionarlo. No es necesaria ninguna acción por parte de los desarrolladores.

Qué mensaje mostrar. La compra no puede completarse porque tu dispositivo no está conectado a Internet. Por favor, inténtalo de nuevo más tarde con una conexión a Internet estable.

SKError.Code.cloudServiceRevoked, código 8

Qué significa. Este dispositivo no tiene acceso al servicio de pago de StoreKit. Este error suele producirse en Sandbox.

Cómo solucionarlo. Crea un nuevo usuario de Sandbox o simplemente intenta repetir la operación.

Qué mensaje mostrar. Lo sentimos, se ha producido un error.

SKError.Code.privacyAcknowledgementRequired, código 9

Qué significa. El usuario no aceptó las condiciones de uso en la AppStore. Como se indica en la documentación, “el usuario aún no ha aceptado la política de privacidad de Apple para Apple Music”. Sin embargo, parece un error, porque no hay ninguna razón para mencionar Apple Music aquí.

Cómo solucionarlo. No es necesaria ninguna acción por parte de los desarrolladores.

Qué mensaje mostrar. La compra no puede completarse porque no has aceptado las condiciones de uso de AppStore. Por favor, confirma tu consentimiento en los ajustes y a continuación regresa a la compra.

SKError.Code.unauthorizedRequestData, código 10

Qué significa. El ID de tu aplicación no contiene el derecho requerido para usar StoreKit.

Cómo solucionarlo. Debes finalizar el proceso de configuración de las compras dentro de la aplicación.

Qué mensaje mostrar. Se ha producido un error. Inténtalo de nuevo más tarde.

SKError.Code.invalidOfferIdentifier, código 11

Qué significa. El usuario está intentando comprar un producto con una oferta promocional (promo offer) incorrecta.

Cómo solucionarlo. No es necesaria ninguna acción por parte de los desarrolladores.

Qué mensaje mostrar. La oferta promocional no es válida o ha caducado.

SKError.Code.invalidSignature, código 12

Qué significa. La firma de la oferta promocional para la solicitud de StoreKit se ha generado incorrectamente.

Cómo solucionarlo. Comprueba cómo se genera la firma y corrige los errores. Si utilizas Adapty, descarga la clave de suscripción.

Qué mensaje mostrar. Lo sentimos, se ha producido un error al aplicar el código promocional. Inténtalo de nuevo más tarde.

SKError.Code.missingOfferParams, código 13

Qué significa. Los parámetros de la oferta promocional se han formado incorrectamente.

Cómo solucionarlo. Comprueba y corrige los parámetros de tu oferta promocional.

Qué mensaje mostrar. Lo sentimos, se ha producido un error al aplicar la oferta promocional. Inténtalo de nuevo más tarde.

SKError.Code.invalidOfferPrice, código 14

Qué significa. El usuario está intentando comprar un producto con un precio irrelevante. Probablemente, el precio mostrado en AppStore ya no es válido.

Cómo solucionarlo. Establece el precio actualizado de esta oferta en AppStore.

Qué mensaje mostrar. Lo sentimos, tu compra no se puede completar. Inténtalo de nuevo más tarde.

Conclusión

Un manejo de errores correcto mejora la experiencia del usuario y puede devolver al menos a algunos de los usuarios que no pudieron pagar la suscripción inmediatamente por alguna razón. Estos son los errores más comunes al implementar las compras en una aplicación de iOS:

  • SKError.Code.unknown, un error desconocido; 
  • SKError.Code.paymentCancelled, cuando el usuario cancela la compra; 
  • SKError.Code.paymentInvalid, cuando el pago no puede ser procesado.

En realidad, el manejo de errores y la implementación de compras son procesos engorrosos. Así que te recomiendo que pruebes Adapty SDK para iOS, que facilita la implementación de las compras dentro de la aplicación y proporciona otras ventajas, como el análisis de suscripciones, el análisis de cohortes (cohort analysis), las pruebas a/b (a/b testing) para los muros de pago y la verificación del recibo en el lado del servidor (server side).