2011-11-29 17 views
5

no puede recibir ninguna transacción en mi Método paymentQueue:updatedTransactions: delegado. Solo el método delegado paymentQueueRestoreCompletedTransactionsFinished: es golpeado por el depurador. Cuando trato de recuperar la matriz de transacciones, obtengo una matriz vacía.SKPaymentQueue restoreCompletedTransactions: ninguna transacción restaurado

Antes que nada, compro un producto que no se renueve. Después de comprarlo y verificarlo con éxito desde el servidor, se eliminará de la cola de pagos. Que al inicio, llamo al método de pago restoreCompletedTransactions. Como esperaba, el Storekit me pide la contraseña (del usuario de la caja de arena) que ingresé. Pero el método de actualización no se verá. Solo el Método de finalización queda atrapado y, como se describe, las transacciones están vacías.

¿Qué estoy haciendo mal? ¿Es culpa mía, o es manzanas restoreCompletedTransactions broken??

Gracias y BR Nic

+0

Si estoy en lo correcto, debe hacer un seguimiento de los recibos de las transacciones en su propio servidor. – JoePasq

+0

Sí. Pero cada vez que llamo al método restoreCompletedTransactions, debe restaurar todas las compras (por lo que la Guía de programación de compras en la aplicación) – NicTesla

+1

Los productos consumibles no deben restaurarse, son de uso único. Pruébalo con un no consumible. – JoePasq

Respuesta

3

Lo siento por lo que le permite esperar por un tiempo tan largo!

El problema es que en las manzanas In-App Purchase Programming Guide que dice claramente, que no puedo tomar las suscripciones no se renuevan para ser restaurado. Tendré que almacenar las compras por mi cuenta e implementar una funcionalidad de restauración propia.

lo que hice fue incluyendo algunos identificadores en el nombre del producto, que dime, ¿qué tipo de producto que es. (Es un método para almacenar información del producto sin usar mi propio servidor) Entonces mi nombre de Productos es, p. com.mycompany.iphone.non_renewing_30d (Este producto está realmente configurado como un producto que no se renueva)

Por lo tanto, cuando el usuario realiza una compra, guardo esta información en la base de datos CoreData del iDevice. También incluyo mi funcionalidad de caducidad, porque tengo la fecha de compra y la fecha de caducidad de los productos (30d).

Cuando el tiempo expira, el usuario ve un mensaje de diálogo que le indica que hacer una nueva compra. Realmente no me gusta la implementación de Apple de suscripciones no renovables porque le dice al usuario que ya compró el producto y les pide que vuelvan a comprar, pero tuve que lidiar con eso.

Realmente sugiero almacenar la información de compra en el dispositivo iOS, porque no necesita crear su propia funcionalidad de reconocimiento de usuario (por ejemplo, una dirección de usuario o correo electrónico), ya que Apple desactivó la singularidad de UDID.

+0

Pero cuando el usuario desinstala la aplicación, pierde su compra. ¿Hay alguna forma de evitar esto? – JDx

+1

¡Eso es correcto! Necesitas almacenarlo en tu propio servidor. Para almacenar los datos de un usuario específico, también debe crear su propia cuenta/sistema de inicio de sesión. BR – NicTesla

Cuestiones relacionadas