为什么要配置环境变量
- 在App开发过程中,我们一般会遇到在多个环境中切换,比如开发,发布环境, 有时可能还会增加更多的环境,比如开发,发布,测试,内测等等,如果在代码中仅仅使用
if .. else
等句式去区分,那么就可能会导致代码冗余,没有做好解耦 - 在xcode中,可以使用xcconfig文件来区分不同的环境,一个xcconfig文件就对应一套开发环境
配置流程
-
新建xcconfig文件
添加新的环境到工程,并关联xcconfig文件
-
在xcconfig文件设置对应的环境变量
- 如果使用了cocoapods,则需要重新pod install,pod会根据当前工程生成不同的 Pods-xcconfig文件,在自己的xcconfig文件中,只需要include进来
- 使用环境变量
- 取配置文件中的值的方式
$(TYPE) // 取出配置文件中TYPE的值
- 比如需要定义一个BASE_URL字段
-
在xcconfig文件中定义好字段
BASE_URL = bmall-qa.camera360.com
-
为了能在代码中,获取到改字段,则通过info.plist文件,将BASE_URL添加到info.plist中,key为BASE_URL, 值为 $(BASE_URL)
在代码中使用,这时代码运行时,就会根据当期所处的环境,给出不同的值
-
- 取配置文件中的值的方式
static var baseURL: URL {
let releaseURL = URL(string: "https://bmall.camera360.com")!
guard let infoDictionary = Bundle.main.infoDictionary else {
return releaseURL
}
guard let baseURLStr = infoDictionary["BASE_URL"] as? String else {
return releaseURL
}
guard let baseURL = URL(string: "https://" + baseURLStr) else {
return releaseURL
}
return baseURL
}