2012-01-27 13 views
5

Cuando compro un compradas anteriormente "Suscripciones auto-renovable" en mi aplicación, es decirRestauración de compra suscrito para auto-renovable Suscripciones

You're currently subscribed to this... 

Cuando hace clic permiso, en el delegado del pago cola ..

- (void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 
{ 
    for (SKPaymentTransaction * transaction in transactions) 
    { 
     switch (transaction.transactionState) 
     { 
      case SKPaymentTransactionStatePurchased: 
       [self completeTransaction:transaction]; 
       break; 
      case SKPaymentTransactionStateFailed: 
       [self failedTransaction:transaction]; // Why this is called? 
       break; 
      case SKPaymentTransactionStateRestored: 
       [self restoreTransaction:transaction]; 
      default: 
       break; 
     } 
    } 
} 

El transaction.transactionState devuelto es SKPaymentTransactionStateFailed instea d de SKPaymentTransactionStateRestored, ¿es normal?

Entonces, ¿cómo manejo esto correctamente?

Respuesta

1

Tengo el mismo problema y no creo que haya ninguna forma de distinguir este evento de otros errores (devuelve el código de error SKErrorPaymentCancelled). Creo que la única forma de manejarlo es tener un botón "Restaurar compras" y llamar al [[SKPaymentQueue defaultQueue] restoreCompletedTransactions] cuando el usuario lo presiona.

3

En realidad, no puede determinar si el usuario ya está suscrito. Debería tener Suscribirse botón que utilizan los nuevos usuarios para suscribirse, y Botón Restaurar para usuarios ya suscritos.

Y cuando obtiene SKPaymentTransactionStateFailed puede mostrar un mensaje que sugiere utilizar Botón Restaurar en caso de que el usuario ya esté suscrito.

Cuestiones relacionadas