lanzamiento - ios 12 iphone 6
¿Cómo puedo administrar la construcción de una versión Lite vs Paid de una aplicación de iPhone? (7)
Como desarrollador, debe escribir el menor código posible (menos errores, menos tiempo). A medida que las versiones de compilación divergen, tendrá que invertir más trabajo y realizar pruebas por separado.
A menos que esté haciendo una costosa herramienta de hackers, puede considerar mantener la diferencia lo más simple posible: solo tiene algunas preferencias o configuraciones ocultas. De esta forma, la mayoría de las comprobaciones y pruebas harán el mismo trabajo en ambas versiones, muy poco código será diferente. La principal preocupación es no agobiarse como desarrollador.
La razón para tener compilaciones divergentes es asegurarse de que el Free no pueda ser pirateado en una versión "Pagada". Las personas que tratarían de eludir una limitación tan simple son principalmente un subconjunto de aquellos que harían jailbreak a sus teléfonos. No importa lo que hagas, no obtendrás su dinero en ninguna condición, excepto que están tan impresionados que lo compran solo para mostrar su agradecimiento.
Estoy empezando a llegar al punto en el que quiero considerar la construcción de una versión lite de mi aplicación para iPhone. He encontrado algunas cosas en la web que hablan un poco sobre el proceso, a saber:
http://developer.apple.com/tools/XCode/XCodeprojects.html
http://www.pacificspirit.com/blog/2009/01/27/building_for_multiple_iphone_targets_in_xcode
Lo que me interesa específicamente es simplificar el proceso de administración de los archivos que se incluyen en las diferentes versiones de mi aplicación, ya que continuamente modifico y realzo mi versión paga.
Con iPhone 3.0, puedes usar compras en la aplicación en su lugar y permitir que desbloquee la funcionalidad completa sin tener que crear más de una aplicación. También creo que esto evitará que la gente lo obtenga de forma gratuita, pero no estoy tan seguro de eso.
El creador de "Flower Garden" detalla los pros / contras de los diferentes enfoques para crear una versión lite aquí:
http://gamesfromwithin.com/from-full-to-lite-in-under-an-hour
El mejor enfoque es tener un solo proyecto, con múltiples objetivos en su lugar, uno para cada versión de su aplicación. Entonces, ¿cuáles son los objetivos: múltiples objetivos
Encontré el éxito con:
Tutorial: el mismo proyecto de Xcode crea múltiples productos para iPhone http://adeem.me/blog/2009/04/18/tutorial-same-xcode-project-create-multiple-products-for-iphone/
Cubre gran parte de lo que Roger Nolan mencionó en su respuesta a la pregunta, pero paso a paso con capturas de pantalla.
Le permite usar C # ifdef para incluir o excluir la funcionalidad en su aplicación.
Algunos de los detalles no eran exactamente correctos, debido a las diferencias en Xcode, estoy seguro, pero no fue demasiado difícil determinar la forma correcta / nueva de hacer cada paso.
NOTA: Tendrá que ir a Apple y obtener una nueva ID de aplicación para la versión Lite de su aplicación. Los pasos descritos en el tutorial crearán una copia del archivo info.plist, que probablemente cambiarás a algo como infoLite.plist: en este archivo necesitarás cambiar el "Identificador de paquete" para que coincida con esta nueva ID de aplicación. .
La respuesta original es de los días previos a la compra de la aplicación. La respuesta correcta ahora es enviar un solo archivo binario y ofrecer su versión paga a través de las actualizaciones de la aplicación . Es un poco más código, pero es un solo envío y su tasa de conversión será probablemente mejor.
Sin embargo, si aún desea versiones de su aplicación:
Xcode tiene un buen soporte para múltiples objetivos.
En el menú del proyecto, seleccione "Nuevo objetivo ...". Agregue otro ejecutable de iPhone (aplicación Cocoa Touch) a continuación, puede especificar en recursos por recurso qué elementos se incluyen en su destino. Esto puede incluir solo compilar cierto código en su versión paga.
Puede obtener retroalimentación visual rápida sobre lo que está y lo que no está incluido en el objetivo actual al hacer clic derecho en el encabezado de la lista "Grupos y archivos" (lhs superiores) y habilitar la Membresía de destino.
Cambias entre la construcción de diferentes objetivos de la misma forma que cambias entre construir para Simulator o iPhone.
Para especificar en el tiempo de compilación cómo se comporta una clase específica, puede hacer dos cosas: incluir dos versiones de la clase que cada una se construye para su objetivo respectivo o puede establecer un indicador de tiempo de compilación para el preprocesador. Seleccione el objetivo en la lista "Grupos y archivos" y luego "obtener información" sobre ese objetivo. Ve a la pestaña de compilación y busca "preprocesar". Debería ver un elemento llamado "Macros de preprocesador" agregar LITE
a su objetivo lite y de la misma manera agregar PAID
a su objetivo pagado.
En los archivos de origen puede determinar en tiempo de compilación qué versión está compilando para usar #ifdef LITE
etc.
Yendo aún más lejos, podría establecer un indicador global o una variable de miembro AppDelegate basada en #ifdef LITE y cambiar el comportamiento en tiempo de ejecución para las aplicaciones Lite y pagas. Sin embargo, no estoy seguro de ver valor en eso.
Usé una rama de git. Bifurqué mi aplicación principal e hice algunos ajustes para deshabilitar un montón de contenido. Ahora trabajo principalmente en la rama principal y cambio a lite y fusionarme en la última cuando ocurren desarrollos importantes. Funciona muy bien