2009-07-10 10 views
5

Question sur les meilleures pratiques.Configuration de l'iPhone Configuration Activation des fonctionnalités

Existe-t-il un moyen de détecter par programme si l'application est compilée pour une configuration AdHoc et, le cas échéant, d'activer une fonctionnalité dans l'application? Par exemple, je pense à activer un basculement entre l'environnement bêta et l'environnement prod selon que l'application est une configuration AdHoc vs. Release. De cette façon, nous pouvons donner aux testeurs la possibilité de basculer entre les environnements de serveurs dans la même application.

Pourrait faire cela avec un #define mais j'ai pensé que je demanderais s'il y a une manière plus élégante de le faire en détectant la configuration courante.

Répondre

7

Vous pouvez définir une définition personnalisée dans votre configuration à l'aide du paramètre Preprocessor Macros de votre projet ou de votre info cible. Cela fonctionne comme si vous aviez une variable dans votre source.

Dans votre configuration de version, définissez GCC_PREPROCESSOR_DEFINITIONS ("Macros du préprocesseur") sur MYAPP_RELEASE=1. Vous pouvez ensuite utiliser ce code pour modifier la fonctionnalité à la compilation:

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

Cela est également utile pour activer/désactiver les fonctionnalités lors de la compilation pour une cible d'application Lite en utilisant le même projet que votre version complète. –

0

Vous pourriez aussi avoir une clé plist différente pour les configurations et ont votre application lu à partir du fichier .plist à l'exécution comme ...

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

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

Cela fonctionne également, mais généralement, vous ne disposez pas d'une configuration de fichier Info.plist différente pour les configurations AdHoc vs. Release. Je ne pense pas qu'il y ait d'autres paramètres ici que vous auriez besoin de changer. Vous pouvez également trouver l'interface Cocoa dans le bundle/plist plus facile à utiliser: 'NSString * myKey = [[[NBBundle mainBundle] infoDictionary] objectForKey: @" myInfoPlistKeyName "];' – pix0r