2011-09-13 20 views
11

Tengo una aplicación de iPhone que se encuentra actualmente en la tienda de aplicaciones. Quiero hacer exactamente lo que es exactamente la misma aplicación, pero que es gratuita y presenta anuncios.Agregar un destino a un proyecto de Xcode

Mi plan era simplemente copiar el proyecto, crear uno nuevo y agregar anuncios en el código y lanzarlo como una aplicación separada. Sin embargo, alguien mencionó que la mejor solución sería agregar un objetivo adicional a la aplicación existente, proporcionando dos binarios en tiempo de ejecución.

Parece una buena solución para mí, sin embargo, estoy un poco confundido en cuanto a cómo voy a cambiar el código para tener anuncios integrados en el nuevo objetivo, y dejando el original sin tocar?

Respuesta

7

que siguieron this tutorial que, aunque antigua, era básicamente el mismo para Xcode 4. Yo duplicado el objetivo y p-lista, asegurándose de que yo era capaz de correr con los cambios y no afecta a la versión completa de destino.

Luego dupliqué los archivos .xib que serían diferentes. Si observa la configuración del proyecto, en algún lugar puede encontrar una lista que le permite elegir qué recursos están incluidos. Incluya los xibs de la versión lite en la versión lite, y la versión completa en la versión completa, respectivamente. Entonces podrá editar cada uno sin afectar al otro.

Los íconos y las imágenes se pueden cambiar de la misma manera. Simplemente cree un conjunto de iconos de versión lite u otro conjunto de imágenes e incluya los íconos lite en la configuración de recursos del objetivo lite en lugar de las imágenes de la versión completa.

Además, querrá crear algunas macros de preprocesador. En la pestaña de compilación, búscalas y crea una macro llamada LITE_VERSION (o lo que quieras, en realidad no importa) para cada opción de preprocesamiento - depuración, distribución y publicación.

Eso le permite agregar diferentes códigos en los mismos archivos .h y .m. Simplemente use

#ifdef LITE_VERSION 
// Lite version only code here 
#endif 

para separar los dos. También puede usar #ifndef LITE_VERSION para agregar código solo a la versión completa.

Eso es todo! Después de todos los pasos anteriores, debería poder editar los archivos .xib de la versión lite, colocar el código solo en la versión lite o completa y tener imágenes e íconos separados para cada uno.

+0

Gracias. Seguiré ese tutorial a través de. Apreciado. –

+1

Bajo Xcode 4 las cosas parecen diferentes, y lamentablemente todos los artículos y publicaciones de blog en Internet parecen referirse a Xcode3. En Xcode 4, el archivo info.plist NO se dupica automáticamente cuando se duplica el objetivo, y no puedo encontrar una manera de producir dos archivos plist individuales y de trabajo, uno por objetivo. –

+0

No pude entender cómo hacerlo automáticamente, pero realmente no es tan difícil copiar el primero y cambiarle el nombre. –

2

La respuesta de XenElement es correcta. Pero deberías ver las mejores prácticas para hacerlo. Deberías tener una clase de identificador para verificar los objetivos. Si usa macros en todas partes del código, tampoco le parecerán buenos ni a usted ni a otros desarrolladores. En this little blog post, puede ver cómo crear ese tipo de clase de identificador y conocer algunas de las mejores prácticas sobre los objetivos en xcode.

0

Seguí este Just2us: How to create multiple targets for Xcode iPhone Projects tutorial.

Decidí cambiar el paso 3 con la pista de Stu, estableciendo FULL_VERSION explícitamente en la versión de pago.

"Para abordar la preocupación de no tener accidentalmente LITE_VERSION definido como un preprocesador macro (liberando así una versión completa accidentalmente), pongo este pequeño fragmento de código en un archivo de cabecera (sólo tiene que estar en algún lugar en el base de código, sólo asegúrese de que es común a todas las configuraciones) ":

#ifndef LITE_VERSION 
    #ifndef FULL_VERSION 
     #error You probably forgot to specify if this is the Lite or Full version of the app 
    #endif 
#endif 

PS: escribí el código de arriba a la derecha después de que el import en AppDelegate.

Cuestiones relacionadas