purchases purchase manage itmss commission cancel apple app iphone in-app-purchase

iphone - purchase - Cómo omitir la alerta "Ya has comprado esto pero no se ha descargado"



manage app subscriptions (7)

Acabo de solucionar el problema después de crear una nueva cuenta para usar. Creo que el sistema de Apple solo tiene una copia de seguridad y desordena las cuentas por un tiempo.

¡Buena suerte!

Estoy probando mi aplicación en la aplicación de compra. Mientras compro mi producto consumible por segunda vez con mi cuenta de usuario en un entorno de espacio aislado, siempre me muestra una alerta "Ya compró esto pero no se ha descargado. Toque Aceptar para descargarlo ahora". ¿Hay alguna manera de saltar la alerta?

Gracias por cualquier ayuda.


Asegúrese de haber agregado este fragmento de código en el controlador que maneja todas las solicitudes.

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];


Bueno, mi solución después de buscar en la web durante varias horas! ¡No olvide agregar el observador de transacciones para su administrador de IAP!

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

Su aplicación debe agregar un observador a la cola de pagos durante la inicialización de la aplicación. Si no hay observadores adjuntos a la cola, la cola de pago no sincroniza su lista de transacciones pendientes con la App Store de Apple, porque no hay observador para responder a las transacciones actualizadas.

Si una aplicación se cierra cuando todavía se están procesando las transacciones, esas transacciones no se pierden. La próxima vez que se inicie la aplicación, la cola de pagos continuará procesando las transacciones. Su aplicación siempre debe esperar ser notificado de las transacciones completadas.


Esto es en realidad bastante complicado. Apple tiene este mensaje integrado en su proceso de transacción, por lo que si deja que el usuario llegue al punto en el que está intentando recomprar un producto que ya posee, verá este mensaje.

Puedes usar

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Para restaurar cualquier transacción que hayan comprado previamente antes de llegar a la pantalla de compra. Ejecute restoreCompletedTransactions antes de que se cargue la GUI de su tienda, y luego bloquee los botones de compra de cualquier contenido que se desbloquee cuando una transacción se complete con éxito.


Esto también puede suceder con un código perfectamente válido en una compilación ad-hoc si ha iniciado sesión con un ID que no es de sandbox o con el ID de sandbox incorrecto, como uno de un programa de desarrollo diferente al certificado con el que se firmó la aplicación. Como personal vs corporativo, por ejemplo.


He tenido el mismo problema a pesar de que agregué el observador de transacciones y también eliminé la transacción de la cola. Pude arreglarlo limpiando mis perfiles de aprovisionamiento:

  1. Vaya al Portal de aprovisionamiento y compruebe si sus perfiles de distribución / aprovisionamiento de desarrollador siguen siendo válidos: renuévelos si es necesario o, al menos, actualícelos eliminando un dispositivo y agregándolo de nuevo.

  2. Vaya a su organizador en XCode y elimine todos los perfiles de aprovisionamiento, luego haga clic en actualizar.

  3. Elimine su aplicación y todos sus perfiles de aprovisionamiento de aplicaciones de su dispositivo de prueba

  4. Cierre la sesión con su usuario de prueba actual en la tienda de aplicaciones e inicie sesión nuevamente más tarde cuando sus cosas de compra en la aplicación le pidan que lo haga.

  5. Limpie, genere e inicie sesión con su usuario de prueba cuando compre un artículo en su aplicación

  6. ¡Ora para que funcione también para ti!


No debería ver esta alerta si está comprando un consumible después de haberlo hecho. Si es así, nunca ha eliminado la transacción de la cola. Debe eliminarlo antes de que la tienda le permita comprarlo nuevamente.

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];