2012-02-29 15 views
15

Estoy creando una aplicación para iOS que incluirá un IAP con una suscripción que no se renueve. Apple proporciona esta pepita en su overview of IAP:¿Cómo puedo admitir varios dispositivos con compras en la aplicación que no se renuevan?

Usted está obligado a ofrecer suscripciones no renovación a todos los dispositivos propiedad del usuario. Las suscripciones que no se renuevan no se sincronizan automáticamente con todos los dispositivos por Store Kit; debe implementar esta infraestructura usted mismo. Por ejemplo, la mayoría de las suscripciones son provistas por un servidor externo; su servidor necesitaría implementar un mecanismo para identificar a los usuarios y asociar las compras de suscripción con el usuario que los compró.

me gustaría seguir esta regla: Quiero que mis usuarios puedan tomar ventaja de la suscripción se compra en un dispositivo en otros dispositivos también. Entonces, ¿cómo puedo identificar al mismo usuario en su iPhone y iPad? Entiendo que no puedes usar la ID de Apple y no puedes confiar en un método de registro.

Acabo de encontrar this question; la respuesta dada allí no parece ser viable. Debe haber algo más elegante que otros hayan hecho.

+1

¿Significa eso que cuando se llama a [[SKPaymentQueue defaultQueue] restoreCompletedTransactions] en el dispositivo que no se utilizó para comprar la suscripción originalmente, no se recupera la transacción? –

+1

Para subs no renovables, eso es correcto. Tienes que gestionarlos tú mismo. –

Respuesta

3

tengo una sugerencia que me ha dado de Gavin McKenzie, que suena como la mejor apuesta que he oído:

Tras la compra de la suscripción, haga un "código corto" a disposición del usuario. El código también se almacenaría en el servidor, vinculado a la cuenta de ese usuario. Cuando presionen Restaurar en otro dispositivo, solicite el código abreviado del dispositivo y la cuenta originales, vinculando así esos dispositivos.

Gavin sugirió además el uso de esto en un método de "emparejamiento" similar a Bluetooth: al restaurar, inicie el emparejamiento en el Dispositivo A, que genera el código corto y lo empuja al servidor. El dispositivo B puede usar ese código. Cinco minutos después, o cuando se cierra la pantalla de emparejamiento, el código se elimina.

No estoy seguro de cómo podría funcionar si desea restaurar el mismo dispositivo, por ejemplo, después de eliminar el teléfono y restaurarlo. Pero esto parece un buen comienzo.

+1

ha sido probado en producción? ¿Apple acepta esto? – LordT

+0

Llegó tarde a la fiesta aquí, pero sospecho que esto podría no funcionar, incluso si la persona pierde el código, usted sigue siendo responsable de restaurar la suscripción. – CptSupermrkt

+0

Me acabo de volver a comprobar esto. Sí, puedo afirmar que funciona a la perfección! Mi aplicación ha estado en la tienda durante un mes y, a través de dos actualizaciones, ha sido aprobada. Una diferencia de lo que escribí arriba: incluí un nombre de usuario además del token. No estoy seguro de que importe, pero es mejor prevenir que lamentar ... –

0

Si puede eliminar el soporte para iOS por debajo de la versión 5.0, puede usar iCloud para sincronizar un par de clave-valor en todos los dispositivos del usuario.

+0

Es una aplicación nueva, así que me siento cómodo con eso. ¿Pero Apple aceptará iCloud como mecanismo para esto? ¿Y qué pasa si no lo tienen habilitado? –

+0

No veo ningún motivo para que Apple no acepte esto. Sin embargo, si el usuario tiene iCloud apagado, entonces sí, no tiene suerte. –

+7

¡Intenté esto! A Apple no le gustó. Incluso llamé a la junta de revisión (y después de algunas semanas) me llamaron y me dijeron que tenía que implementar un ** nombre de usuario ** **/sistema de contraseña. Lo que hice fue almacenar un identificador único generado en la cuenta iCloud del usuario (y en mi servidor). Cuando comenzaban los nuevos dispositivos, buscaba esa ID y si coincidía con un usuario anterior, extendía este dispositivo a los mismos privilegios. Apple no dijo que no se me permitió almacenar el par de clave-valor, solo que no puedo hacer eso en lugar de un ** sistema ** de contraseña de usuario **. – Andrew

0

ver esto:

http://iphonedevsdk.com/forum/business-legal-app-store/88698-floored-by-new-rejection.html

Aparentemente se puede requerir un nombre de usuario/contraseña antes de la compra. Es realmente la única forma que tiene sentido. Un código puede ser compartido por miles de personas, lo cual es malo.

+0

Como muchos argumentan en ese hilo, requerir el registro previo a la compra es una experiencia de usuario cuestionable. Prefiero mi método, que funciona bien, por cierto, de asignar un token por usuario. –

0

Echa un vistazo Frac.as. Hace una variante del emparejamiento de "código corto" sugerido anteriormente, pero con algunos conocimientos integrados para evitar el abuso. Es una API de SaaS, con un generoso nivel gratuito.

Cuestiones relacionadas