切换环境iOS

Ano*_*mer 2 xcode test-environments ios testflight

我需要以一种方式配置我的环境,即在 TestFlight 上进行内部测试时将应用程序指向开发服务器,并在推送到实际应用商店时指向生产服务器。我有调试和发布变量设置。归档应用程序后,构建配置设置为发布。我想指向开发服务器,直到它通过 iTunes-Connect 推送到 App Store。或者在推送到测试人员的 TestFlight 时将构建配置更改为 Debug 并在推送到应用商店时更改回 RELEASE 是否正常?谢谢。

Gok*_*l G 5

您可以使用方案实现此目的

1)Project -> Info -> Configurations通过复制Release 在 中创建一个新配置在此处输入图片说明

我将其命名为 Dev(Release) 在此处输入图片说明

2)为构建设置中的新配置设置适当的配置文件(在您的情况下是临时或分发)和代码签名标识 在此处输入图片说明

3)为您的内部版本创建一个新方案, 在此处输入图片说明 在此处输入图片说明

4) 将新方案的 Archieve 编辑为您的新配置 在此处输入图片说明

5)到目前为止,我们已经处理了您在内部测试/发布的情况下指向开发服务器的用例。为此,我们必须创建一个新的编译器标志(Swift)/预处理器宏(Objective-C)。

目标-c

  Go to Build Settings -> Preprocessor Macros     
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  Add a new macro "DEV_RELEASE=1" under the new configuration
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 注意:如果尚未在发布配置下设置,也用于设置 RELEASE=1 标志。

Swift 转到 Build Settings -> Swift Compiler - Custom Flags under Active Compilation Conditions,将 Flags RELEASE 和 DEV_RELEASE 添加到相应的 Release 和 Dev(Release) 配置中。

在此处输入图片说明

6) 现在你可以在你的代码中访问这些 Macro/CompilerFlags

#ifdef DEBUG
   NSString* serverURL = @"https://dev.com”;
#elif RELEASE
   NSString* serverURL = @"https://prod.com”;
#elif DEV_RELEASE
   NSString* serverURL = @"https://dev.com”;
#endif
Run Code Online (Sandbox Code Playgroud)

7)当你想发送一个内部构建(adhoc或Testflight)时,只需切换Scheme和Archieve 在此处输入图片说明