2011-03-06 15 views
11

Estoy buscando configurar Compras en aplicaciones para una aplicación de iPhone. Planeo utilizar el nuevo tipo de suscripción auto renovable. Sin embargo, quiero ofrecer duraciones múltiples para una suscripción en particular, pero no puedo ver cómo puedo recuperar la duración del SKProduct que se devuelve en la matriz SKProductsResponse.products.iPhone - Cómo recuperar la duración de la suscripción auto renovable para compras en la aplicación

El objeto SKProduct tiene price, localizedTitle y localizedDescription. Sin embargo, si configura una familia de suscripción con duraciones múltiples, el título/descripción se establece una vez para la familia, por lo que no puede incluir la duración, y los documentos explícitamente dicen que no incluyen la duración en el título/descripción. Sin embargo, no puedo ver ningún otro campo donde pueda recuperar la duración de la visualización en mi tienda de aplicaciones personalizada. O me estoy perdiendo algo o no estará disponible hasta 4.3?

Punteros muy apreciados!

Respuesta

10

Necesita tener algún mapeo product_id => length en algún lugar, ya sea en su aplicación o recuperado desde el backend de su aplicación.

+0

Sí Esto es efectivamente lo que terminé haciendo. –

10

Puede usar un identificador de producto específico para cada duración (en el código debajo del identificador de producto para una suscripción de 1 mes se encuentra "com.domainname.myapp.sub1month" y para una duración de 7 días es "com.domainname.myapp". sub7day ") y la búsqueda de que en el paymentQueue:

-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{ 
    for(SKPaymentTransaction *transaction in transactions){ 
    switch (transaction.transactionState){ 
     case SKPaymentTransactionStatePurchasing: 
      break; 
     case SKPaymentTransactionStatePurchased: 
      if([transaction.payment.productIdentifier isEqualToString:@"com.domainname.myapp.sub1month"]{ 
       newSubscriptionEndDate=[transaction.transactionDate timeIntervalSinceReferenceDate]+3600*24*31; 
      } 
      if([transaction.payment.productIdentifier isEqualToString:@"com.domainname.myapp.sub7day"] ){ 
       newSubscriptionEndDate=[transaction.transactionDate timeIntervalSinceReferenceDate]+3600*24*7; 
      } 
      [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
      break; 
+0

sí, básicamente, lo que hice –

Cuestiones relacionadas