2011-12-14 13 views
10

Tengo una aplicación que tiene suscripciones automáticas renovables, la compra de estas está bien, sin embargo, si un usuario elimina la aplicación e intenta restaurar las suscripciones en una fecha posterior, no voy a volver. la información que esperaríaiOS: SKPaymentTransactionStateRestored originalTransaction == nil

De acuerdo con apple docs, debería recibir una Transferencia original con los detalles de la transacción inicial, en la mayoría de los casos y en la caja de arena esto es exactamente lo que está sucediendo. Sin embargo, en algunas de nuestras aplicaciones en vivo, recibimos un valor nulo Transacción original.

¿Alguien puede pensar por qué no volvería a recibir la originalTransacción? La fecha enviada en [transaction transactionDate] es la misma que esperaría de [[transaction originalTransaction] transactionDate] sin embargo, no sé si es seguro suponer que si la Transacción original es nula, la [transaction transactionDate] siempre ser la fecha de la Transacción original.

+0

sólo tiene que ir a través de este .. http://stackoverflow.com/questions/9537663/ios-how-to-get-a-list- of-already-bought-products –

Respuesta

1

Estaba teniendo exactamente el mismo problema. Lo resolví comprobando si la transacción original no devuelve la transacción actual.

aquí es el código que sustituye en - (void)restoreTransaction:(SKPaymentTransaction *)transaction

if (transaction.originalTransaction.payment.productIdentifier) { 
    [self provideContentForProductIdentifier:transaction.originalTransaction.payment.productIdentifier]; 
} else { 
    [self provideContentForProductIdentifier:transaction.payment.productIdentifier]; 
} 
+0

¿Puede explicar esto en detalle? – Gaurav

+0

@Gauravakasparsh mientras probaba Encontré que el servidor estaba devolviendo nada para algunas de las transacciones originales, para eso puse una condición if y la reemplacé con la transacción actual si es nul. – Sam

+0

Gracias por confirmar, me sucedió lo mismo y también lo solucioné manejando nada. – Gaurav