2010-03-19 9 views
20

Estoy probando mi aplicación de compra en la aplicación. Mientras compro mi producto consumible por segunda vez con mi cuenta de usuario en el entorno de la zona de pruebas, siempre aparece una alerta "Ya lo ha comprado pero no se ha descargado. Toque Aceptar para descargarlo ahora". ¿Hay alguna manera de saltearse la alerta?Cómo saltarse la alerta "Ya compró esto pero no se ha descargado"

Gracias por cualquier ayuda.

+0

¿Tiene la solución ... También estoy recibiendo el mismo problema aquí. –

Respuesta

6

Esto es bastante complicado. Apple tiene este mensaje integrado en su proceso de transacción, por lo que si permite que el usuario llegue al punto en el que intentan volver a comprar un producto que ya poseen, verán este mensaje.

Puede utilizar

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

Para restaurar las operaciones que han comprado previamente antes de llegar a la pantalla de su compra. Ejecuta restoreCompletedTransactions antes de que se cargue la GUI de tu tienda y luego bloquea los botones de compra de cualquier contenido que se desbloquea cuando una transacción se completa con éxito.

+1

¿Incluso para consumibles? – Brandon

+5

No, restaurarTransacciones Completadas no sirve de nada cuando se usan consumibles. –

+7

Tenga en cuenta que al llamar a 'restoreCompletedTransaction' aparecerá la pantalla de entrada de contraseña, y es probable que el usuario no sepa por qué. – pt2ph8

14

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

[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
+3

Desafortunadamente, esto no eliminó el problema para mí. – Gomfucius

+0

Eso es correcto. También asegúrese de que su paymentQueue: updatedTransactions: se está llamando después de reiniciar el simulador/dispositivo y verifique el estado de las transacciones pendientes. En algún momento debes llamar a finishTransaction para. – saulobrito

2

Esto también puede ocurrir con el código perfectamente válido en una red ad-hoc construir si usted está conectado con un ID no caja de arena, o el ID de caja de arena MAL - como uno de un programa diferente que el dev cert la aplicación fue firmada con. Como personal vs corporativo por ejemplo.

10

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

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

Su aplicación debe añadir un observador a la cola de pagos durante la inicialización de la aplicación. Si no hay observadores conectados a la cola, la cola de pagos no sincroniza su lista de transacciones pendientes con el Apple App Store, porque no hay un observador que responda a las transacciones actualizadas.

Si una aplicación se cierra cuando las transacciones aún se están procesando, esas transacciones no se pierden. La próxima vez que se inicie la aplicación, la cola de pagos reanudará el procesamiento de las transacciones. Su aplicación siempre debe esperar ser notificada de las transacciones completadas.

+0

Oye votante, ¿puedes dar tu razón? Gracias :) – Kjuly

+2

** ella ** está celosa: D –

2

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

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer]; 
1

Acabo de solucionar el problema después de haber creado una nueva cuenta para usar. Creo que el sistema de Apple simplemente se respalda y arruina las cuentas por un tiempo.

¡Buena suerte!

2

que he tenido el mismo problema, aunque lo hice añadir el observador transacción y también hizo eliminar la transacción de la cola.Yo era capaz de solucionarlo mediante la limpieza de mis perfiles de aprovisionamiento:

  1. Ir a Provisioning Portal y comprobar si sus perfiles de datos de distribución/desarrollador siguen siendo válidas - renovarlos si es necesario o al menos actualizarlos mediante la eliminación de un dispositivo y agregarlo de nuevo.

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

  3. Eliminar su aplicación y todos sus perfiles de datos de aplicación del dispositivo de prueba

  4. sesión con tu usuario de prueba actual de la AppStore y acceder de nuevo más adelante, cuando tu en materia de compra APP te pido que hagas eso.

  5. Limpio, construir y abrir una sesión con su usuario de prueba cuando se compra un artículo en su aplicación

  6. Ora que funciona para usted también!

+0

En el departamento de FWIW, simplemente reiniciar mi iPad Mini (corriendo 7.0.4) también restauró el comportamiento de la zona de pruebas "normal" (sin interferir con los perfiles de aprovisionamiento, aunque iba a ¡prueba los pasos de más arriba!) – mm2001

Cuestiones relacionadas