ios - 在 iOS 中针对不同构建发行版管理 plist 的 url、设置、 key 的最佳实践?

标签 ios swift plist

有哪些最佳实践可以让您对不同环境的所有不同设置保持理智并为它们生成不同的构建?例如,我们的应用程序连接到 auth0 进行登录,我们有两个不同的环境:后端服务的阶段 + 生产环境。因此,我们为 auth0 创建了两个单独的应用程序(一个用于阶段,另一个用于生产)。在 iOS 上管理此设置的最佳做法是什么?您是否使用各种设置为 stage + prod 创建单独的 plist 文件?

我们生成了两种不同的应用程序构建:一种用于阶段(用于测试版),另一种是用于发布到应用商店的产品构建。

最佳答案

在 Swift3 中,我开始使用枚举来描述不同目标的不同行为。

第 1 步 - 在目标的 plist 中,我指定目标类型,Alpha、Beta 或 Production。

Indicate the type of build in the target plist

第 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/

相关文章:

objective-c - 选择 uitabbarcontroller 项时 ios 检索

ios - 什么样的事情会导致 viewWillLayoutSubviews 在后台线程中运行?

ios - Xcode 9 服务器 : Unable to boot device due to insufficient system resources

iphone - 如何在 xcode 4.2.1 控制台窗口中显示日志消息

ios - UITableView 返回空白单元格

xcode - 没有显示 segue 显示的快速后退按钮

ios - 安装 ios 应用程序时更改消息中的服务器名称

ios - RealmSwift : How to create To-One Relationships properly?

iphone - 关于 plist 的快速问题

ios - 如何保护越狱设备中的 plist 文件?