support solucion restaurar los formatear fabrica español descargar con como botones bloqueado apple iphone ios ios4 in-app-purchase

iphone - solucion - iOS: restauración de la suscripción automática renovable



support.apple.com/iphone/restore en español (2)

Mire cómo restaurar suscripciones renovables automáticamente

Básicamente debe llamar a [[SKPaymentQueue defaultQueue] restoreCompletedTransactions] y recuperará las transacciones restauradas. Debería mirar la propiedad originalTransaction Transacción. Sabrá la fecha de transacción para cada transacción (también para las expiradas). Luego observa el identificador del producto y su aplicación debe saber cuál es la duración de la suscripción para cada identificador de producto. Y como conoce la fecha de inicio y la duración de cada transacción, puede calcular los períodos de tiempo durante los cuales la suscripción fue válida. Validarlos como cualquier otra transacción: envíelos a su servidor, que luego los enviará a http://buy.itunes.apple.com/verifyReceipt (cambie buy to sandbox para probarlos).

Estoy implementando suscripción renovable automática. En eso tengo la siguiente pregunta

¿Puede un usuario restaurar el contenido de la suscripción incluso después de que haya expirado?

en caso afirmativo, ¿cómo puedo validarlos y dejar que se descarguen?


-(void)restoreSubscription:(SKPaymentTransaction *)transaction { NSUserDefaults *defaultData = [NSUserDefaults standardUserDefaults]; NSArray *productID = [defaultData objectForKey:@"productID"]; NSArray *subMonths = [defaultData objectForKey:@"SubMonth"]; NSLog(@"%@",productID.description); NSLog(@"Array ==%@",objContantManeger.subscriptionMonth); NSMutableArray *arrID = [[NSMutableArray alloc] initWithArray:objContantManeger.subscriptionProductID]; NSMutableArray *arrMonth = [[NSMutableArray alloc] initWithArray:subMonths]; NSDate *date; NSDate *exDate; for (int i =0;i<arrID.count;i++) { NSString *idStr =[arrID objectAtIndex:i]; NSString *monthStr = [arrMonth objectAtIndex:i]; int addsubMonth = [monthStr intValue]; NSLog(@"%i--%@",i,idStr); NSLog(@"%i-->%i",i,addsubMonth); NSLog(@"Transaction Date--%@",transaction.originalTransaction.payment.productIdentifier); if ([transaction.originalTransaction.payment.productIdentifier isEqualToString:idStr]) { NSLog(@"Date..%@",transaction.originalTransaction.transactionDate); date = transaction.originalTransaction.transactionDate; NSString *dateStr = [date description]; NSRange range; // year range.location = 0; range.length = 4; NSString *yearStr = [dateStr substringWithRange:range]; int year = [yearStr intValue]; NSLog(@"%i",year); // month range.location = 5; range.length = 2; NSString *monthStr = [dateStr substringWithRange:range]; int month = [monthStr intValue]; NSLog(@"%i",month); // day range.location = 8; range.length = 2; NSString *dayStr = [dateStr substringWithRange:range]; int day = [dayStr intValue]; NSLog(@"%i",month); NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; NSLog(@"addsubMonth---)%i",addsubMonth); [components setYear:year]; [components setMonth:month+addsubMonth]; [components setDay:day]; NSLog(@"Expire DATE-->%@",[calendar dateFromComponents:components]); exDate = [calendar dateFromComponents:components]; NSUserDefaults *defult = [NSUserDefaults standardUserDefaults]; [defult setObject:exDate forKey:@"subexpiredate"]; [defult synchronize]; // return; } }

Puede usar este método para validar la suscripción, ya que es la fecha de inicio y caducidad de la suscripción.

Consejos--

Implementar comprobación de suscripción, utilizando el método delegado de aplicación applicationDidEnterBackground.