2011-02-18 10 views
5

De acuerdo con la manzana en el Apéndice de guía de compra de programación:automática suscripción Compras In-App: Restauración de renovaciones posteriores

La App Store crea una transacción separada cada vez que se renueva una suscripción. Cuando su aplicación restaura compras anteriores, Store Kit entrega cada transacción a su aplicación.

Imaginemos que mi suscripción a la aplicación es solo del lado del cliente (sin componente de servidor). La forma más sencilla de verificar que se hayan facturado las renovaciones posteriores parece ser restaurar las compras anteriores todos los meses.

Sin embargo,, esto muestra la solicitud de contraseña de iTunes del usuario cada vez que llame al restoreCompletedTransactions, lo que parece una mala experiencia del usuario. ¿Es el único recurso para usar el código de verificación de recibo del servidor (junto con el nuevo "secreto compartido")?

Respuesta

3

La tienda de aplicaciones llama al paymentQueue y registra una transacción cada vez que se renueva-automático. La transacción se contabiliza con transaction.transactionState == SKPaymentTransactionStateRestored.

La cuestión es que, lamentablemente, esto se registró solamente a un dispositivo. Un segundo dispositivo no recibe la publicación. Por lo tanto, para detectar la renovación automática, o más bien para detectar la falta de una renovación automática y denegar a cualquier dispositivo una subscripción continua, debe realizar una restauraciónTransacción completa o "http publicar una JSON codificada de 64 bits que contenga la última transacción". Si es el primero, el usuario debe dar su contraseña; y como usted señala, eso es intrusivo. Si esto último, se requiere mucha codificación adicional. Por lo tanto, mi pregunta para responder a su pregunta es ... ¿por qué no StoreKit tiene un comando:

(no existe) - [[SKPaymentQueue defaultQueue] restoreAttachedTransactions: (*) NSArray transacciones];

Este comando fluiría al igual que un restoreCompletedTransactions pero sólo restauraría las transacciones adjuntos y, lo más importante, que no requeriría de inicio de sesión por parte del usuario. Tiene la misma protección de seguridad que el "http post un JSON codificado de 64 bits que contiene la última transacción" y permite que todo el proceso de compra en la aplicación se realice en StoreKit en lugar de requerir código de publicación web.

Si esto tiene sentido para usted, por favor, sugiera cómo conseguir esto a Apple .... gracias.

+0

Buena idea. Ojalá Apple lo permitiera. –

0

Si no tiene ningún componente de servidor, el único lugar donde puede almacenar esta información se encuentra en un archivo de base de datos// config locales

La opción restoreCompletedTransactions está ahí para cuando hay algo mal con su base de datos local, que debiera coloque un botón en algún lugar de su panel de configuración avanzada para restaurar todas las transacciones anteriores.

Por lo tanto, usted tendrá que confiar en que los datos se almacenan localmente. Normalmente, esto es seguro ya que no puede cambiar su sistema de archivos local (a menos que tenga jailbreak). Si no desea confiar en sus usuarios de esa manera, puede cifrar opcionalmente se ...

+0

Gracias por la respuesta. Sin embargo, no es realmente específico para las suscripciones; esto solo se trata de compras a través de StoreKit en general. –

Cuestiones relacionadas