Restauración de suscripciones vencidas autorreagibles

Siguiendo las guías de Apple, las suscripciones renovables son restaurables -> el dispositivo puede enviar restreCompletedTransactions a los serveres de Apple y Apple responderá con una list de todas las transactions completadas.

Mi pregunta es: ¿Apple envía todas las transactions completadas alguna vez ? (solo está relacionado con la compra de productos no consumibles y suscripciones renovables automáticas, ofc)

Por ejemplo: hay una suscripción mensual renovable en mi aplicación. El usuario instala mi aplicación en enero de 2012. En mayo de 2012, deshabilita la renovación automática de la suscripción. Después de un año, en enero de 2013, se suscribe nuevamente. En marzo de 2013, deshabilita la renovación automática de la suscripción nuevamente. Finalmente, en junio de 2013 se suscribe nuevamente. En julio de 2013, intentó usar la function "Restaurar compras", ¿qué información enviará Apple?

¿Qué información enviará Apple a ese dispositivo? ¿Enviará Apple información sobre todas las suscripciones, incluso las suscripciones caducadas?

PS El sentido de una pregunta es get experiencia real trabajando con suscripciones renovables y restaurando información sobre ellas. Probando en sandbox a veces se obtienen resultados muy extraños.

Edit: De acuerdo, entonces he tenido testings suficientes para decir que , Apple envía todas las transactions completadas alguna vez , incluidas las transactions, conectadas con la suscripción caducada, incluso si hubiera otra subscripción después.

"Store Kit proporciona funcionalidad incorporada para restaurar transactions para productos no consumibles, suscripciones renovables y suscripciones gratuitas. Para restaurar las transactions, su aplicación llama al método restreCompletedTransactions de la queue de pagos. La queue de pago envía una request al App Store para restaurar las transactions. A cambio, App Store genera una nueva transacción de restauración para cada transacción que se completó previamente. La propiedad originalTransaction del object de transacción de restauración contiene una copy de la transacción original. Su aplicación procesa una transacción de restauración recuperando la transacción original y usándola para desbloquear el contenido comprado. Después de que Store Kit restaure todas las transactions anteriores, notifica a los observadores de la queue de pago llamando a su método de pago: el método "- Apple Docs

Bueno, sí, obtendrás toda la compra vinculada a esa ID de Apple (incluidas las caducadas). Puede filtrarlos en la callback de delegado y solo enviar el más reciente a sus serveres.

 - (void)handleRestonetworkingTransaction:(SKPaymentTransaction *)transaction { NSLog(@"Somehow a transaction was restnetworking."); NSDate* receiptPurchaseDate = transaction.transactionDate; NSDate* currentDate = [NSDate date]; NSTimeInterval daysPassedSincePurchase = [currentDate timeIntervalSinceDate: receiptPurchaseDate] / SECONDS_PER_DAY; if ([transaction.originalTransaction.payment.productIdentifier isEqualToString: monthlySubscriptionProductIdentifier]) { if (daysPassedSincePurchase <= DAYS_PER_MONTH) { // send the transaction receipt to your servers. [self handlePurchasedTransaction: transaction]; } } else if ([transaction.originalTransaction.payment.productIdentifier isEqualToString: yearlySubscriptionProductIdentifier]) { if (daysPassedSincePurchase <= DAYS_PER_YEAR) { [self handlePurchasedTransaction: transaction]; } } }