作为iOS开发人员,我们已经意识到管理不同的环境,如开发、QA、Beta和生产。对于这些不同的环境,有不同的服务器URL,应用程序图标和配置。
因此,在创建指向环境的新构建之前,我们需要记住,我们还必须更改服务器URL。我们可以通过更改常量文件中的某些硬编码标志值或使用宏来实现此目的,但它会使一切变得更复杂。所以我们的想法是,如果我们创建不同的模式和配置,那么它允许我们更改应用程序服务器URL,App图标,Plist文件和配置。
在本文中,我们来尝试使用模式和配置管理不同的环境。
大致的步骤:
项目设置:
打开XCode并使用正确的名称创建一个新的单一视图应用程序。
添加架构和配置:
在添加模式之前,我们需要知道每个XCode模式都带有两种不同的构建配置:Debug和Release。然后,如果需要,我们可以针对特定的构建配置进行更改。
现在要添加我们的构建配置,请在左侧的Project Navigator窗格中选择项目。然后选择信息从两个选项(信息和构建设置)。在配置中,我们必须为五个环境(开发,生产,QA,Beta和UAT)添加我们自己的配置。

首先,双击Debug并将其重命名为Debug(Development)。同样,双击Release并将其重命名为Release(Development)。现在单击+,然后选择Duplicate Debug(Development)和Duplicate Release(Development),然后使用其他可用名称更改重复的环境名称。

对于模式创建,请转到XCode左上角的管理模式。在那里,您可以看到一个模式已经可用。将其重命名为Development - 或者您可以删除现有的并添加名为Development的新文件。然后为其他环境添加其余四个模式。

哎呀,不要忘记检查那里的共享框。添加所有模式后,manage schema屏幕应如下所示:

添加配置设置文件:
右键单击Project,选择新文件,然后添加Configuration Settings File并为其指定与环境相同的名称。

添加所有配置文件后,Project Navigator左侧窗格应如下所示:

现在最重要的部分开始:在相应的配置文件中添加您的服务器URL和其他自定义键值。

添加Plist文件:
将info.plist文件重命名为development.plist。复制并粘贴项目内不同环境的相同plist文件,并使用环境名称重命名每个plist文件。您可以在plist文件中设置一些特定于环境的键和值。之后,将配置文件中的键添加到plist文件中,如下所示:

现在我们必须为每个构建配置设置适当的plist路径。从Targets中,只需选择一个plist文件,然后使用调试和发布配置的相同名称重命名该文件。


将构建配置与配置文件链接:
逐项选择Projects Info中的所有构建配置(Debug和Release)。然后设置已添加到项目中的相应配置文件。

添加所有配置文件后,Build设置应如下所示:

因此,我们现在已成功将所有配置文件链接到相应的构建配置。
将架构与构建配置链接:
现在,最后一步是将模式与构建配置相关联。为此,请选择任何架构,转到编辑架构,然后在其中设置相应的构建配置。

准备好运行项目:
现在所有设置都已完成。您唯一需要做的就是选择架构并运行 - 将自动为您选择环境。因此,为了获取服务器URL和其他值,我创建了一个Environment.swift文件。看看这个:
import Foundation
public enum PlistKey {
case ServerURL
case TimeoutInterval
case ConnectionProtocol
func value() -> String {
switch self {
case .ServerURL:
return "server_url"
case .TimeoutInterval:
return "timeout_interval"
case .ConnectionProtocol:
return "protocol"
}
}
}
public struct Environment {
fileprivate var infoDict: [String: Any] {
get {
if let dict = Bundle.main.infoDictionary {
return dict
}else {
fatalError("Plist file not found")
}
}
}
public func configuration(_ key: PlistKey) -> String {
switch key {
case .ServerURL:
return infoDict[PlistKey.ServerURL.value()] as! String
case .TimeoutInterval:
return infoDict[PlistKey.TimeoutInterval.value()] as! String
case .ConnectionProtocol:
return infoDict[PlistKey.ConnectionProtocol.value()] as! String
}
}
}
要在ViewController.Swift或任何其他文件中获取服务器URL或其他设置,您只需编写一行代码:
let server_url = Environment().configuration(PlistKey.ServerURL)
print(server_url)
您还可以从构建设置管理不同环境的不同应用程序图标。然后,您只需要查找一秒钟即可查看设备上安装的环境构建。

每次构建项目时,都不要花费额外的时间来更改服务器URL或其他配置。这是管理不同环境,应用程序图标和配置的最简单方法。
网友评论