¿Cuál es la mejor manera de usar XCode para instalar múltiples comstackciones de la misma aplicación de iOS en tu iPhone?

Con frecuencia encuentro que necesito tener una compilation en mi iPhone, que es mi versión 'demo-ready' que podría apuntar a mi server de demostración. También quiero una compilation que sea la última y más grande compilation de debugging que estoy desarrollando y que apunta a mi server de desarrollo. ¿Alguien ha encontrado una manera realmente simple para mí instalar dos aplicaciones que quizás sean exactamente el mismo código, pero apuntan a diferentes serveres? Alternativamente, ¿podría tener una aplicación que tuviera algunas versiones detrás de la última versión? Preferiblemente, utilizaría el mismo proyecto XCode para build e instalar en el iPhone.

Puede agregar configuraciones de compilation especiales para cada uno que use un file info.plist diferente. Entonces, tal vez para su demostración, tiene un file info.plist llamado MyApp-Info-DEMO.plist y MyApp-Info.plist para el lanzamiento.

Luego, puede agregar su variable de server como variable info.plist y searchla cuando comience la aplicación. O simplemente cree una instrucción DEFINE en su nueva configuration que es algo así como SERVER = demo.myserver.com para la demostración y SERVER = production.myserver.com para la versión en vivo.

La parte más importante es cambiar el CFBundleIdentifier en el nuevo info.plist. Entonces, en tu demo, podrías nombrarlo algo así como com.mycompany.myapp.DEMO y el verdadero podría ser com.mycompany.myapp.

Esto permitirá que ambas versiones aparezcan en el teléfono al mismo time (los diferentes CFBundleIdentifiers). Solo recuerde que si está utilizando compras en la aplicación o notifications push de server, no podrá hacer esto sin un perfil específico y separado para su identificador de aplicación real y su demo.

Podrías crear 2 objectives diferentes con 2 diferentes info.plists y 2 diferentes preprocesadores definidos (en la configuration de compilation para cada uno de los 2 destinos). Entonces ifdef en el preprocesador define para seleccionar la constante del server que usa el comstackdor para cada objective.

Luego, haga que el nombre del producto y el ID del package sean diferentes en las dos configuraciones de destino diferentes (para que ni el dispositivo ni el Simulador confundan los dos packages de aplicaciones).

Con la versión actual de Xcode, logrará esto cambiando el file Info.plist de la aplicación para usar un identificador de package diferente (y posiblemente también cambie el Nombre del producto de la aplicación en la configuration de compilation).

La próxima versión de Xcode, a partir de lo que he leído en la documentation preliminar, tiene una característica que puede simplificar bastante lo que quieres hacer. Sin embargo, dado que el software de prerelease está cubierto por el NDA, no puedo proporcionarle ningún detalle.