有哪些最佳实践可以让您对不同环境的所有不同设置保持理智并为它们生成不同的构建?例如,我们的应用程序连接到 auth0 进行登录,我们有两个不同的环境:后端服务的阶段 + 生产环境。因此,我们为 auth0 创建了两个单独的应用程序(一个用于阶段,另一个用于生产)。在 iOS 上管理此设置的最佳做法是什么?您是否使用各种设置为 stage + prod 创建单独的 plist 文件?
我们生成了两种不同的应用程序构建:一种用于阶段(用于测试版),另一种是用于发布到应用商店的产品构建。
最佳答案
在 Swift3 中,我开始使用枚举来描述不同目标的不同行为。
第 1 步 - 在目标的 plist 中,我指定目标类型,Alpha、Beta 或 Production。
第 2 步 - 我声明一个枚举来描述所有可能的构建类型
enum RedactedAppVersion {
case Alpha
case Beta
case Production
}
第 3 步 - 我实现了一个惰性全局属性来读取 plist。
lazy var appVersion: RedactedAppVersion = {
if let temp = Bundle.main.object(forInfoDictionaryKey: "RedactedAppVersion") as? String {
if temp.lowercased() == "alpha" {
return RedactedAppVersion.Alpha
}
if temp.lowercased() == "beta" {
return RedactedAppVersion.Beta
}
}
return RedactedAppVersion.Production
}()
第 4 步 - 当我需要说获取 api 的路径时,我询问枚举...
4a - 将以下内容添加到枚举中
func apiPath() -> String {
switch self {
case .Alpha: return "https://test.redacted.com/v1/"
case .Beta: return "https://test.redacted.com/v1/"
case .Production: return "https://api.redacted.com/v1/"
}
}
4b - 我得到了这样的正确路径 -
let path = ApplicationManagerSingleton.sharedInstance.appVersion.apiPath() + "auth/sign-up"
关于ios - 在 iOS 中针对不同构建发行版管理 plist 的 url、设置、 key 的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901155/