2010-01-14 7 views
7

Sto sviluppando un'applicazione per iPhone che utilizza un server da qualche parte per recuperare i suoi dati. Da qualche parte nel codice sorgente dell'applicazione ho codificato l'URL da utilizzare per connettersi. Questo va bene, tranne che non voglio sempre testare usando un server di produzione! Non voglio scherzare con i dati in tempo reale, solo per testare qualcosa a livello locale. Così ho installato una versione locale dello stesso server. Ma per fare in modo che l'app per iPhone usi quel server è quello di cambiare l'URL hardcoded nel codice sorgente.iPhone - Passaggio tra le impostazioni dell'ambiente locale e di produzione

Questo è un po 'un rompicapo da fare se si passa spesso tra i due server. Inoltre, potrei rilasciare accidentalmente l'app che utilizza ancora l'URL locale!

Stavo pensando che forse XCode può aiutarmi con questo dato che ha la nozione di un'opzione di configurazione "Debug" e "Release" con cui costruire. Quindi la mia domanda è: posso in qualche modo modificare la configurazione di Debug in modo che punti all'URL del server locale? Forse indicando un file proprietà o plist che contiene l'URL specifico per l'ambiente. Potrei quindi creare due versioni di questo file delle proprietà e fare in modo che il punto di configurazione del debug sia impostato su uno, mentre si imposta il punto di configurazione dell'uscita sull'altro.

Qualcuno sa come posso realizzare questo?

risposta

2

In uno dei file di intestazione (ad esempio il file di intestazione precompilato) definire le macro con l'URL. Dai uno sguardo a this article e usa un approccio simile.

Per inciso, sto utilizzando l'approccio di registrazione da questo articolo in tutte le mie app - funziona come un fascino, lo consiglio vivamente!

+0

Questo approccio è un po 'difficile. Come è possibile controllare i commenti del post per l'articolo, alcune persone hanno avuto problemi con esso. E inoltre devi definire i flag di compilazione, quando puoi usare flag/identificatori predefiniti che l'iPhone SDK/GCC già implementa ('__OPTIMIZE__', '__DEBUG__' o qualsiasi altra cosa) – vfn

+0

Ho capito che funziona, ma suppongo che devi impostalo per ogni progetto con cui inizi, sarà una seccatura nelle lunghe e forse anche brevi tirature. Questo dovrebbe essere configurato nell'ambiente XCode o nel compilatore IMO. – Jonny

1

È possibile definire le macro pre-proccessor in Xcode semplicemente modificando le impostazioni della lingua gcc:

Vai al menu Progetto e selezionare "Modifica impostazioni di progetto". Vai alla scheda "Costruisci".

Andare alla sezione "GCC 4.0 - Lingua". C'è un'impostazione chiamata "Altre C Flags". Aggiungi tutti i macro "-Dwhatever" che desideri lì.

5

Inserire questo codice nel punto in cui è necessario utilizzare la configurazione in base alla modalità (debug/release) = (sviluppo/produzione).

Il posto migliore in cui inserirlo è nel file "ProjectName" _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