目前正在开发一个连接到多个不同网络服务的 iPhone 应用程序。这些网络服务有几个不同的地址,具体取决于我们连接到的环境:
- 测试 - http://staging.example.com/api/testing/servicename
- 分期 - http://staging.example.com/api/servicename
- 生产 - http://www.example.com/api/servicename
我想知道定义这些 url 并根据我们要构建的环境在它们之间切换的最佳约定是什么。这是我可以在我的build设置中定义的东西,还是我可以使用定义来设置各种构建来指定环境?
注意:不确定这是否重要,但目前我们使用的是纯 Objective-c,尽管我们可能会在项目生命周期后期的某个时候集成 Swift。
最佳答案
这对我有用:
#ifdef TARGET_PROD
#define BASE_URL @" http://www.example.com/api/"
#endif
#ifdef TARGET_VAL
#define BASE_URL @"http://staging.example.com/api/"
#endif
#ifdef TARGET_TEST
#define BASE_URL @"http://staging.example.com/api/testing/"
#endif
例如,将其放入 Commons.h 或公共(public)项目文件中。
对于任何目标,请转到build设置并设置处理器宏,在“调试”和“发布”中添加 TARGET_PROD、用于目标测试的 TARGET_TEST 和用于目标暂存的 TARGET_VAL。 当您发出请求时,只需在您的 BASE_URL 中附加 SERVICENAME,如下所示:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@,%@", BASE_URL,yourService]]];
关于ios - Xcode 构建环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28048951/