관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] iOS 프로젝트 배포 환경별 build 세팅(info.plist 방법, 단일 타겟), debug / alpha / beta / release 본문

iOS 앱 배포와 출시

[iOS - swift] iOS 프로젝트 배포 환경별 build 세팅(info.plist 방법, 단일 타겟), debug / alpha / beta / release

jake-kim 2021. 1. 5. 21:09

* xcconfig 사용 방법: ios-development.tistory.com/428

xcconfig방법은 .xcconfig파일을 별도로 swift문법과는 다르게 작성하는 번거로움이 있는 단점과 더욱 정밀하게 선언하여 관리할 수 있는 장점이 있지만, info.plist에 configuration을 가져와서 .swift파일에서 동작하도록 하는게 더욱 간편

코드에서 해당 Configuration(debug, alpha, beta, release) 확인 방법

  • Build Settings에서 User-Defined에 해당 빌드 configuration을 문자열 key값 정의
  • info.plist에 위에서 정의한 key값을 저장하도록 정의
  • info.plist에 정의한 key값을 가지고 코드에서 접근

Build setting의 User-Defined에 configuration key값 정의

  • Porject -> Build Settings에서 User-Defined setting으로 추가: configuration별로 세팅할 수 있는 옵션 생성

  • 생성된 DEPLOY_PHASE에 alpha부터 release까지 기입

 

info.plist에 deploy정보를 알 수 있도록 세팅

  • key(코드에서 이 값을 가지고 접근): "DeployPhase"
  • value: $(DEPLOY_PHASE)

Deployment에 맞추어서 세팅할 수 있는 ServiceConfiguration 클래스 생성

class ServiceConfiguration {
    enum DeployType: String {
        case debug
        case alpha
        case beta
        case release
    }

    private static let configKey = "DeployPhase"

    static func getDeployPhase() -> DeployType {
        let configValue = Bundle.main.object(forInfoDictionaryKey: configKey) as! String
        guard let phase = DeployType(rawValue: configValue) else {

            print("Something wrong in project configurations fot Deployment Phase! Check User Defined Settings.")
            return DeployType.release
        }
        return phase
    }
    
    public static func serviceBaseURL() -> URL {
        switch getDeployPhase() {
        case .debug:
	        return URL(string: "https://debug.com")!
        case .beta:
	        return URL(string: "https://beta.com")!
        case .alpha:
        	return URL(string: "https://alpha.com")!
        case .release:
        	return URL(string: "https://release.com")!
        }
    }
}

 

 

Comments