À l'aide de définitions de préprocesseur dans l'Application iOS info.plist
J'ai une application iOS qui utilise l'authentification unique avec Facebook dans le cadre de l'obtention de votre application avec Facebook de l'authentification unique, vous devez spécifier le FacebookAppId et url de callback dans l'info.plist. J'ai 2 différentes Facebook groupes, l'un pour les tests et l'autre pour la production. Je veux être en mesure d'avoir les valeurs des deux clés spécifiés ci-dessus un ensemble basé sur les directives de préprocesseur.
Dans mon MessageBomb-Préfixe.pch j'ai le texte suivant, qui fonctionne très bien:
#ifdef TEST
//Development environments
#define PARSE_APP_ID "dev parse app id"
#define PARSE_CLIENT_ID "dev parse client id"
#define FB_APP_ID "dev facebook id"
#else
//Production environments
#define PARSE_APP_ID "prod parse app id"
#define PARSE_CLIENT_ID "prod parse client id"
#define FB_APP_ID "prod facebook id"
#endif
Toutefois, dans mon info.plist je l'ai fait ci-dessous, mais il ne semble pas fonctionner:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>fb${FB_APP_ID}</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>${FB_APP_ID}</string>
Est-il même possible de faire ce que je suis en train de faire. J'ai mis le projet de prétraiter l'info.plist.
Merci
Peter
vous devriez faire une réponse. (Et peut-être inclure quelques détails sur la façon de spécifier le préprocesseur inclure des fichiers?)
OK je vais le faire
OriginalL'auteur user1956608 | 2013-01-08
Vous devez vous connecter pour publier un commentaire.
Si vous allez dans les Paramètres de construction vous pouvez définir
Preprocess Info.plist File
àYES
et puis définissezInfo.plist Preprocessor Prefix File
à un.h
fichier que vous avez placés dans votre projet avec#define
directives.Donc par exemple si j'ajoute une clé de mon
Info.plist
fichier:testKey
avec la valeurTEST_VALUE
. Je place ensuitetest.h
dans mon projet avec:Et puis j'ai mis
Preprocess Info.plist File
àYES
etInfo.plist Preprocessor Prefix File
àtest.h
La valeur de cette clé, lorsqu'ils sont récupérés est maintenant "hello_world". Si vous modifiez la valeur de la macro beaucoup vous pouvez trouver ce que vous devez faire Produit/Nettoyer à voir des changements parce que XCode semble cache compilé valeur.
Jamais l'esprit, j'ai eu la "Base" niveau choisi, et non pas "Tous".
Je ne produit propre et même supprimer les données dérivées et il utilise toujours mon vieux Facebook app id de la valeur. J'ai de reconstruire et de re-nettoyer et de supprimer le cache environ 20 fois pour les nouveaux changements.
OriginalL'auteur Andrew Tetlaw
L'Info.plist préprocesseur vous permettra d'utiliser les paramètres de construction de dans votre Info.plist, pas
#define
s. Ainsi, vous pouvez définirFB_APP_ID
comme une coutume de l'utilisateur paramètre de construction de votre cible (et donner des remplacements dans différents régimes), et cette valeur sera ensuite disponible pour les Infos.plist. Cependant, l'utilisateur paramètres de génération de ne pas exposés à votre code. C'est, sauf si vous le fumier avec vos Définitions de Préprocesseur paramètre de construction et d'ajouter une entrée qui ressemble à(les barres obliques inverses sont nécessaires pour obtenir les guillemets passé la coquille de l'invocation)
Si votre ID d'application peut contenir des espaces, alors vous aurez besoin d'ajouter des guillemets à obtenir au-delà de la coquille de l'invocation:
En fin de compte, vous devrez construire des paramètres qui ressemble à quelque chose comme ceci:
OriginalL'auteur Lily Ballard
Pour accéder à plist:
Créer une nouvelle variable
Définir
L'utiliser dans votre info plist
Désolé, de ne pouvoir accéder à l'utilisateur définit dans le code directement. Vous avez besoin d'ajouter à "macros du préprocesseur". Vous pouvez écrire une macro préprocesseur qui déclare la valeur de l'utilisateur à définir "FOO=${FOO}". Ensuite, vous pouvez accéder à des FOO dans le code.
OriginalL'auteur hfossli