iphone - hack - Transición de una versión pagada por la aplicación a la versión gratuita con In App Purchase
in app purchase ios hack (5)
¿Hay alguna manera de saber si su aplicación se ha ejecutado antes? (como la configuración que escribe al salir, los archivos de datos creados, la fecha de la primera ejecución)
Si es así, podrías poner un código en tu actualización como:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (nil == [defaults objectForKey:@"app_v2_has_been_run"]) {
if (nil == [defaults objectForKey:@"some_key_v1_makes"] {
// they never had v1 of your app
} else {
// they had v1 of your app, so unlock some stuff for them
}
[defaults setObject:[NSDate date] forKey:@"app_v2_has_been_run"]; // or whatever
}
Tengo usuarios existentes de una aplicación de pago en App Store. Me gustaría cambiar la aplicación a una aplicación gratuita con funciones que se pueden desbloquear. ¿Hay alguna manera de incluir a mis usuarios existentes en esta nueva versión gratuita que permita una "actualización" pagada para que los usuarios existentes sean tratados como si ya hubieran pagado por esta actualización? O, como espero, ¿debemos mantener dos bases de código separadas a medida que avanza el desarrollo de la aplicación, en lugar de enojar a nuestros clientes existentes al obligarlos a comprar nuevamente?
Soy consciente de que inicialmente no habrá muchas respuestas autorizadas a esta pregunta, ya que Apple solo hoy ha comenzado a admitir las compras desde la aplicación desde aplicaciones gratuitas ...
La solución más robusta es hacer validación de recibos. Si no tiene un servidor con el que se está comunicando su aplicación, puede hacerlo en el dispositivo con la ayuda de OpenSSL. (Consulte los videos de WWDC en la validación de recibos para obtener más detalles). El punto clave es que el recibo tiene un atributo que le indica en qué versión el usuario compró originalmente su aplicación. En función de esta información, puede desbloquear funciones para los clientes existentes.
No debería necesitar dos bases de código separadas; use la compilación condicional y genere dos objetivos.
Para mí, mantener dos bases de código separadas no será una buena solución, ya que deberá mantener 2 en la compra de la aplicación (peor aún con la compra de la aplicación con un servidor), tal vez 2 juegos centrales, y separar su descarga (y mucho menos) visible) porque tal vez algún nuevo usuario comprará directamente la aplicación de pago.
Pero para cambiar la aplicación de pago a la aplicación gratuita, no tengo una buena forma de hacerlo, por la razón principal de que si actualiza su dispositivo y, por lo tanto, lo limpie, no tendrá algo para no obtener la aplicación gratuita para los primeros usuarios. Para pagarlo, y tener usuarios realmente enojados.
La mejor manera será pedirle a una base de datos de Apple que sepa cuándo el usuario compra la aplicación o algo así. Si alguien sabe algunos trucos para hacerlo, me encantará que lo comparta;)
Una posible solución podría ser colocar el código en una nueva actualización de su aplicación pagada que activaría cualquier conmutador que usaría para identificar a los clientes pagados (ya sea en una lista de propiedades u otra forma). Si le da a sus clientes pagados el tiempo suficiente para actualizar, deben marcarse como pagados. Luego, convierta su versión de pago en la versión de actualización gratuita / pagada y elimine su versión "Lite" existente de la tienda. Los nuevos clientes tendrán que usar la compra en la aplicación para desbloquear la versión completa, pero se reconocerá que los clientes existentes ya han pagado.
Un problema con esto es cómo hacer que todos sus clientes existentes se actualicen a la versión intermedia que gira el interruptor "pagado" a tiempo para migrar la aplicación al modelo de actualización gratuita / paga.