use*_*608 13 xcode objective-c ios
我有一个使用SSO和Facebook的iOS应用程序,作为让你的应用程序与Facebook的SSO一起工作的一部分,你必须在info.plist中指定FacebookAppId和回调网址.我有2个不同的Facebook组,一个用于测试,一个用于生产.我希望能够根据预处理程序指令设置上面指定的两个键的值.
在我的MessageBomb-Prefix.pch中,我有以下,工作正常:
#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
Run Code Online (Sandbox Code Playgroud)
但是在我的info.plist中,我已经完成了以下操作,但它似乎不起作用:
<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>
Run Code Online (Sandbox Code Playgroud)
甚至可以做我想做的事情.我已将项目设置为预处理info.plist.
谢谢彼得
And*_*law 14
如果您进入构建设置,您可以设置Preprocess Info.plist File为YES然后设置Info.plist Preprocessor Prefix File为.h使用#define指令放置在项目中的文件.
因此,例如,如果我向我的Info.plist文件添加一个键:testKey使用值TEST_VALUE.然后我test.h在我的项目中放置:
#define TEST_VALUE hello_world
Run Code Online (Sandbox Code Playgroud)
然后我设置Preprocess Info.plist File到YES和Info.plist Preprocessor Prefix File到test.h
检索时该键的值现为"hello_world".如果您经常更改宏的值,您可能会发现需要执行Product/Clean来查看更改,因为XCode似乎缓存了已编译的值.
Info.plist预处理器将允许您在Info.plist中使用构建设置,而不是#defines.因此,您可以FB_APP_ID在目标中定义为自定义用户构建设置(并为不同的方案提供覆盖),然后此值将可供Info.plist使用.但是,用户构建设置不会暴露给您的代码.也就是说,除非你弄乱你的预处理器定义构建设置并添加一个看起来像的条目
FB_APP_ID=@\"$(FB_APP_ID)\"
Run Code Online (Sandbox Code Playgroud)
(反斜杠需要通过shell调用获取双引号)
如果您的应用程序ID可能包含空格,那么您需要添加引号以通过shell调用:
FB_APP_ID="@\"$(FB_APP_ID)\""
Run Code Online (Sandbox Code Playgroud)
最后,您将拥有如下所示的构建设置:

| 归档时间: |
|
| 查看次数: |
12261 次 |
| 最近记录: |