在我的开发中,我希望在测试时点击开发 URL,但是当应用程序在我的 iPhone 上运行时,我希望它在生产 URL 上运行。如何在 Xcode 中进行设置?
几乎似乎我需要能够设置环境变量(在这种情况下是不同的 URL)。
我在哪里设置这些?请握住我的答案,因为我还很新
谢谢
有很多方法可以做到这一点。我首选的方法是创建一个名为 Constants.h 的文件,如下所示:
//
// Constants.h
//
#ifndef Constants_h
#define Constants_h
#pragma mark - Instances
#ifdef DEVELOPMENT
#define ROOT_URL @"http://127.0.0.1:8000"
#endif
#ifdef STAGING
#define ROOT_URL @"http://staging.example.com"
#endif
#ifdef PRODUCTION
#define ROOT_URL @"http://production.example.com"
#endif
然后,我只是将它包含在我的 *-Prefix.pch 文件中,如下所示:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Constants.h"
#endif
在构建设置中,设置 DEVELOPMENT、STAGING 或 PRODUCTION = 1。
现在您可以在项目中的任何位置访问诸如 ROOT_URL 之类的内容。
祝你好运!
我也更喜欢这种#define
方法。对于那些不太熟悉的人来说,这些是预处理器指令,甚至在编译器获取代码之前就已经设置好了。
Environment variables
在程序运行时设置,并且可以在scheme editor
Xcode 4.x+ 中进行操作。您可以设置不同的方案来满足不同的测试环境。
要在运行时从代码中访问环境变量,请使用以下命令:
NSString *url = @"http://standardurl.com";
NSDictionary *env = [[NSProcessInfo processInfo] environment];
NSString *overrideURL = [env valueForKey:@"url"];
if (overrideURL != nil)
url = overrideURL;
如果您不想使用常量文件,还可以通过添加新的字符串行来在 plist 文件中设置不同的 URL。
(虽然我承认在这里没有什么收获,但这取决于你喜欢在哪里设置你的网址)
在您的 myApp-plist 文件中添加新行,如下所示:
"DevelopmentEndpoint" "字符串" "http://development.endpoint.com"
"ProductionEndpoint" "字符串" "http://production.endpoint.com"
在您的代码中:
// Get endpoint from main bundle
#ifdef DEVELOPMENT
NSString *endpoint = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"DevelopmentEndpoint"];
#else
NSString *endpoint = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"ProductionEndpoint"];
#endif
在您的构建设置中,在“预处理器宏”部分下添加 DEVELOPMENT 以进行调试或发布等。