使用配置切换环境
我遇到的最好的解决方案是配置 ,也称为构建配置 。 配置是在项目级别定义的,这意味着您可以将其用于项目的每个目标,并利用方案来定义特定构建的配置。
在本教程中,我将向您展示如何设置一个定义几种配置的项目。 结合使用方案,配置使您可以轻松地在环境之间切换。
项目设置
打开Xcode并基于Single View Application模板创建一个新项目。
添加配置
每个Xcode项目都包含两个默认配置, Debug和Release 。 对于某些项目,这些配置就足够了。 但是,暂时假设您正在构建与Web服务交互的应用程序。 该Web服务定义了两个环境, Staging和Production 。 配置可以帮助您轻松地在这些环境之间快速切换。
在Xcode中打开项目后,在左侧的项目浏览器中选择项目。 配置是在项目级别定义的。 要检查配置列表,请打开顶部的“ 信息”选项卡,然后找到“ 配置”部分。
点击+按钮并使用Duplicate“ Debug” Configuration添加配置。给新名称Staging Debug,相同 如 通过选择重复的“调试”配置来使用Release版本,名称是Production Release。
为了确保在运行时可以访问配置,我们将其存储在目标的Info.plist中 。 这很容易做到。 在左侧的Project Navigator中 ,选择Info.plist ,单击鼠标右键,然后选择Add Row创建一个新的键值对。 将密钥设置为Configuration ,并将值设置为$(CONFIGURATION) 。
可通过环境变量CONFIGURATION访问在构建过程中使用的配置。 这使我们很容易在构建过程中动态更新目标的Info.plist 。
定义方案
通过将当前配置存储在目标的Info.plist中 ,现在可以添加轻松切换环境的功能了。 为此,我们为每个配置添加了一个方案。 点击左上方的活动方案,然后选择管理方案 。
点击+按钮并添加名为StagingDebug,ProductionRelease的方案。 不需要与配置同名。 您可以使用其他名称。
然后通过从下拉菜单中选择配置为方案分配新配置。
加载配置详细信息
有几种方法可以显示或加载与特定配置或环境相关的详细信息。 您可以将它们存储在JSON文件中并将此文件包含在应用程序捆绑包中,也可以将它们存储在属性列表中以便于访问。 缺点是其他人可以通过从App Store下载应用程序来轻松访问应用程序捆绑包的内容。 如果数据不是关键数据,那可能很好。 如果环境详细信息包括敏感数据(例如令牌和API密钥),那么您需要寻找更安全的解决方案。
我想以替代解决方案结束本教程。 将新文件添加到Xcode项目中,并将其命名为Configuration.swift 。 我们首先声明一个枚举“环境”,该枚举定义了应用程序可能的环境。 对于每个环境变量,我们声明一个计算属性。 为每个计算属性返回的值取决于当前环境StagingDebug或ProductionRelease 。
我们还定义了一个结构Configuration。 Configuration结构声明一个惰性的存储属性,即Environment类型的环境。 实现很简单。 我们从目标的Info.plist加载配置。 请记住,我们会动态更新配置并将其存储在目标的Info.plist中 。 然后,我们使用一种简单的技术来解析配置名称并初始化相应的Environment实例。
Configuration.swift的完整文件
实作
打开ViewController.swift并更新viewDidLoad(),如下所示。
选择顶部的StagingDebug方案,然后在模拟器或物理设备上运行该应用程序。 这就是Xcode中的输出结果。
您可以从下面的链接下载教程的源文件
macvinod /配置
大多数移动应用程序都连接到云中的一项或多项服务。 您连接到的服务可能会有所不同…… github.com