2011-07-24 10 views
8

En mi compra en la aplicación, el método case SKPaymentTransactionStateRestored: no se llama cuando se restaura la compra, sino que se llama al case SKPaymentTransactionStatePurchased:, pero desea mostrar al usuario información diferente cuando se restablece la compraSKPaymentTransactionStateRestored no se llama cuando se restablece la compra en la aplicación

+0

Tiene el mismo problema ... ¿recibió alguna respuesta? – kthorat

+0

@TheAstra no todavía no he encontrado una solución. Tal vez pregunte en los foros de Apple Dev – JonasG

+0

¿Hay alguna solución todavía? – NicTesla

Respuesta

0

Tengo una idea. El método (paymentqueue: updatedTransactions :) y, especialmente, el estado SKPaymentTransactionStateRestored: se llama, cuando creo un SKProductRequest y empiezo a cargarlo.

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithArray: productIdentifiers]]; 
     request.delegate = self; 
     [request start]; 

Voy a echar un vistazo a la solución de manzanas y ver si encuentro alguna diferencia.

3

[queue restoreCompletedTransactions] activará el estado SKPaymentTransactionStateRestored, donde la cola es SKPaymentQueue. No debe esperar que se llame después de que su usuario confirme las transacciones. En cambio, el dispositivo sería advertido por el dispositivo si ya había comprado el producto.

0

En el caso, que no es resuelto sin embargo, es posible hacerlo con un truco lógico. Cuando se active la restauración, recuérdelo con un indicador booleano (o un estado enum, si lo prefiere) y muestre un mensaje diferente cuando se active el SKPaymentTransactionStateComprado. Es posible aplicar los dos métodos de delegado

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 

y

- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error 

para averiguar, cuando la restauración haya terminado. Y para ahorrar en este caso, es posible que no permita que el usuario realice ninguna compra mientras la restauración esté en progreso. Puede mostrarle al usuario algo como this, para que el usuario vea que algo está sucediendo actualmente.

Esto es lo que hice y me funciona.

Cuestiones relacionadas