我的实际要求是
我想对某些值进行一些更改,这些值对于不同的版本是不同的,
比如说:
我们在应用程序中使用了 Parse.com 框架工作和 Flurry 集成。 我们需要为这些parse / flurry集成提供一些键
作为
[Parse setApplicationId:@"6Z8Antqqf4u5TZFbUtzePuoPnOjqgkFHsQXmVtGW" clientKey:@"SiDnoJsvHjMBdaFw3QRpm2mvVblJsdYYkWHBL8hR"];
在这里,我想为不同类型的构建使用不同的密钥,以避免影响原始的生产构建。
那我怎么能区分
生产版本(clint build / appstore build) AdHoc构建(内部分布式构建,如Testflight / appearean) QA / Debug build (实施时进行内部测试)
答案 0 :(得分:1)
您可以使用预处理宏。导航到您的目标,然后转到构建设置(确保选中所有设置,而不是基本设置):
使用示例:
#ifdef DEBUG
NSString* appKey = @"DEBUG_KEY";
#else
NSString* appKey = [config valueForKey:@"AppKey"];
#endif
答案 1 :(得分:0)
预处理宏工作,但是您可以使用更可靠和有组织的方式来执行此操作,从而允许您将所有调试,特殊和生产环境变量保存在各自的位置。
那就是为每个环境创建一个单独的目标,并为每个目标分配一个不同的.m文件。
例如,要创建调试环境:
1)创建(通过复制当前目标)一个新的"调试"目标
2)创建一个" configs"文件,我们称之为configs.m / .h
3)在您的configs.m文件中添加您的每个服务Parse,Facebook,Flurry等的所有应用密钥。
4)复制文件,并将其命名为configs_debug.m。 (选择"调试"目标作为目标)。
5)确保每个文件都指向正确的目标,方法是单击它并检查其目标成员资格"在身份下并在右侧的“工具”窗口中键入。 configs.m应指向"生产" target和configs_debug.m应该指向" dev"目标
每个文件在.m中看起来基本相同,只需要更改密钥的值即可。
<强> Configs.h 强>
extern NSString * const PARSE_APP_KEY;
@interface Configs : NSObject
@end
Configs.m (指向目标&#34;制作&#34;)
#import "Configs.h"
NSString * const PARSE_APP_KEY = @"yyyyyyyyyy";
@implementation Configs
@end
Configs_debug.m (指向目标&#34;调试&#34;)
#import "Configs.h"
NSString * const PARSE_APP_KEY = @"xxxxxxxxx";
@implementation Configs
@end