2012-05-11 12 views
9

Esta es la primera vez que uso Store Kit y todo ha ido bien hasta que intento restaurar las compras. He visto muchas otras publicaciones sobre el desbordamiento de la pila sobre problemas similares, pero no he encontrado una solución que me funcione.paymentQueueRestoreCompletedTransactionsFinished: devuelve una cola vacía cuando debería haber transacciones en ella

Tengo un botón en mi aplicación que llama al [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]. Esto activa el método SKPaymentTransactionObserverpaymentQueueRestoreCompletedTransactionsFinished:. El problema es que paymentQueueRestoreCompletedTransactionsFinished: tiene cero transacciones en la cola devuelta.

Si intento realizar la compra, se me notifica que ya hice la compra. Esto me dice que la tienda sabe que mi ID de Apple de prueba ha realizado con éxito la compra en un intento anterior. ¿Por qué entonces paymentQueueRestoreCompletedTransactionsFinished: devuelve una colección de transacciones vacía en su cola?

Ha habido alguna mención de que la caja de arena se comporta de forma errática, pero tengo que ver que esto funcione antes de que inicie sesión en la AppStore.

¿Alguna idea? ¿Me estoy perdiendo de algo?

Gracias de antemano.

Respuesta

8

¿Está manejando las transacciones en -paymentQueue:updatedTransactions:? Esta devolución de llamada obtiene sus transacciones restauradas antes de la devolución de llamada paymentQueueRestoreCompletedTransactionsFinished:.

Debe realizar su proceso de restauración y manejo dentro de -paymentQueue:updatedTransactions:.

+6

Estoy manejando restauraciones en ambos métodos. Lo más extraño terminó arreglando mi problema. Creé un nuevo usuario de prueba en itunesconnect y el nuevo usuario se comporta como se esperaba. Por alguna razón, mi primer usuario de prueba no puede restaurar las compras. – process255

+0

Eso es desconcertante. Espero que las cuentas del mundo real no actúen así. – Hyperbole

+0

He experimentado EXACTAMENTE lo mismo. Estaba tirando de mi cabello durante dos días, resultó algo incorrecto con los usuarios de la prueba que estaba usando. Creó un nuevo usuario de prueba, entonces todo está bien. – Dermot

7

Creo que esto es un error con la tienda de aplicaciones de sandbox. Mis restauraciones no funcionaban con mis cuentas de prueba (creadas en la era de iOS 5.0). -paymentQueue:updatedTransactions: no se llamaba durante una restauración.

Según lo sugerido por process255, creé un nuevo usuario de prueba en iTunes Connect. ¡Con la nueva cuenta de prueba, todo funciona bien!

0

Se depende del tipo de producto la cual los productos se pondrán en cola de vuelta en:

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 

como una alternativa, la continuación de la recepción en:

[[NSBundle mainBundle] appStoreReceiptURL] 

único problema con los recibos es que están almacenados localmente, pero apple no lo mantiene colgando ... por supuesto, las compras también se guardan en el servidor Apple. Actualice/cargue el recibo por:

SKReceiptRefreshRequest *recreq = [[SKReceiptRefreshRequest alloc] init]; 
[recreq start]; 
Cuestiones relacionadas