2009-07-10 14 views
5

Domanda sulle migliori pratiche.Configurazione build iPhone Funzioni di abilitazione

C'è un modo per rilevare a livello di codice se l'app è stata compilata per una configurazione AdHoc e, in tal caso, abilitare una funzione nell'app?

Ad esempio, sto pensando di abilitare un passaggio tra beta e l'ambiente di produzione dato a seconda che l'app sia una configurazione AdHoc o Release.

In questo modo possiamo dare ai tester la possibilità di passare da un ambiente server all'altro nella stessa app.

Potrebbe farlo con un #define ma ho pensato di chiedere se c'è un modo più elegante per farlo rilevando la configurazione corrente.

risposta

7

È possibile impostare una definizione personalizzata nella configurazione utilizzando l'impostazione Preprocessor Macros nel progetto o le informazioni sulla destinazione. Funziona come se tu avessi #define 'd una variabile nella tua fonte.

Nella configurazione di rilascio, impostare GCC_PREPROCESSOR_DEFINITIONS ("Macro preprocessore") su MYAPP_RELEASE=1. È quindi possibile utilizzare questo codice per modificare la funzionalità al momento della compilazione:

#ifdef MYAPP_RELEASE 
    NSString *title = @"Release Version"; 
#else 
    NSString *title = @"Beta Version"; 
#endif 
+0

Ciò è utile anche per abilitare/disabilitare le funzioni durante la compilazione per una destinazione applicazione Lite utilizzando lo stesso progetto della versione completa. –

0

si potrebbe anche avere una chiave plist diverso per le configurazioni e quindi avere la vostra applicazione leggere dal file .plist in fase di esecuzione come ...

CFBundleRef mainBundle; 
CFDictionaryRef bundleInfoDict; 
mainBundle = CFBundleGetMainBundle(); 
bundleInfoDict = CFBundleGetInfoDictionary(mainBundle); 

if (bundleInfoDict != NULL) { 
    // check for your custom config key here 
} 
+0

Anche questo funziona, ma generalmente non hai una diversa configurazione del file Info.plist per le configurazioni AdHoc e Release. Non penso ci siano altre impostazioni qui che avresti bisogno di cambiare. È anche possibile trovare l'interfaccia Cocoa per il pacchetto/plist più facile da usare: 'NSString * myKey = [[[NSBundle mainBundle] infoDictionary] objectForKey: @" myInfoPlistKeyName "];' – pix0r

Problemi correlati