2010-01-14 4 views
7

Estoy desarrollando una aplicación para iPhone que usa un servidor en alguna parte para buscar sus datos. En algún lugar del código fuente de la aplicación codifiqué la URL para usar para conectarme. Esto está bien, ¡excepto que no siempre quiero probar usando un servidor de producción! No quiero meterme con datos en vivo, solo para probar algo localmente. Así que configuré una versión local de ese mismo servidor. Pero para que la aplicación de iPhone use ese servidor, se debe cambiar la URL codificada en el código fuente.iPhone - Alternar entre las configuraciones del entorno local y de producción

Esto es un poco de un dolor en el culo que debe hacer si usted está a menudo el cambio entre los dos servidores. Además, podría soltar accidentalmente la aplicación que todavía usa la URL local.

estaba pensando que tal vez XCode me puede ayudar con esto, ya que tiene la noción de una "depuración" y una opción de configuración "Release" de construir con. Entonces mi pregunta es: ¿puedo de alguna manera cambiar la configuración de Debug de forma que apunte a la URL del servidor local? Tal vez al señalar un archivo de propiedades o plist que contiene la URL específica del entorno. Luego podría hacer dos versiones de este archivo de propiedades y hacer que el punto de configuración de depuración sea uno, al mismo tiempo que establezca el punto de configuración de la versión en el otro.

¿Alguien sabe cómo puedo lograr esto?

Respuesta

2

En uno de sus ficheros de cabecera (como el archivo de encabezado precompilado) definir macros con la URL. Eche un vistazo a this article y use un enfoque similar.

Por cierto, estoy usando el método de registro de este artículo en todas mis aplicaciones - que funciona como un encanto, lo recomiendo encarecidamente!

+0

Este enfoque es un poco complicado. Como puede consultar los comentarios de la publicación del artículo, algunas personas tuvieron problemas al respecto. Y también necesita definir indicadores de compilación, cuando puede marcar/identificadores por defecto que el SDK/GCC de iPhone ya implementa ('__OPTIMIZE__', '__DEBUG__', o lo que sea) – vfn

+0

Lo hice funcionar, pero supongo que porque tiene que configura esto para cada proyecto con el que comiences, será una molestia en las carreras largas y posiblemente incluso cortas. Esto debe configurarse en el entorno XCode o compilador IMO. – Jonny

1

Puede definir macros pre-proccessor en Xcode simplemente editando la configuración de idioma gcc:

Ir al menú Proyecto y seleccione "Editar Configuración del proyecto". Ve a la pestaña "Construir".

Vaya a la sección etiquetada "GCC 4.0 - Idioma". Hay un ajuste llamado "Otros indicadores C". Agregue todas las macros "-Dwhatever" que desee allí.

5

Pon este código donde es necesario utilizar la configuración basada en el modo (debug/release) = (desarrollo/producción).

El mejor lugar para poner es en el "Nombre del Proyecto" archivo _Prefix.pch.

#ifndef __OPTIMIZE__ // __OPTIMIZE__ is not enabled, it means that the active config is Debug, so here you have to put your code for development mode 

// For example 
#define SERVER_URL @"http://my.test.server/something" 

#else //__OPTIMIZE__ is defined, so put here your production code 

// For example 
#define SERVER_URL @"http://my.production.server/something" 

#endif // __OPTIMIZE__

Cheers,
VFN

Cuestiones relacionadas