왕논의 연구실

[Xcode] InfoPlist 값 Debug/Release 에 따라 조절하기 본문

iOS/Xcode

[Xcode] InfoPlist 값 Debug/Release 에 따라 조절하기

ywangnon 2022. 6. 8. 11:06

구글 애드 작업을 하면서 조심해야 하는 것 중 하나가 키값을 잘 못 적용하는 것입니다. 해보신 분들은 아시겠지만, 구글 애드 테스트를 할 때는 반드시 테스트 키값을 적용해야합니다. 구글은 이것에 민감해서 테스트 키값을 잘 못 적용해서 광고가 막히거나 심한 경우 계정이 막혔다는 사람도 있습니다.

이런 사고를 막기 위해 자동으로 키값을 알아서 배정해 줄 수 없을까 고민하였습니다. 매번 테스트할 때 테스트키값을 적용하다가, 출시전에 올바른 키값을 넣는 행위가 번거롭다고 느껴졌기 때문입니다.

 

현재 키값이 적용되고 있는 곳은 infoPlist와 bannerView의 ID값 두 곳입니다.

 

첫번째 시도) 코드로 작성

BannerView는 코드이기 때문에 코드로 작성해보았습니다.

이렇게 하면 BannerView의 ID는 바꿀 수 있어도, InfoPlist의 값은 바뀌지 않습니다. 그래서 InfoPlist에서 참조를 해서 값이 바뀔 수 있도록 하는 방법이 있는지 알아보았습니다.

 

두번째 시도) 빌드세팅에서 참고

InfoPlist를 보면 값이 고정되어 있지 않고 참조하고 있는 값들이 있습니다.

이처럼 빌드세팅값들을 읽어와서 참고하게 만들고, 그것을 코드로 가져와서 세팅하는 방법을 시도해복로 하였습니다.

 

앱의 Target의 Build Settings에서 "User-Defined" 를 눌러추가합니다.

그리고 참고할 때 적어줄 이름을 적어줍니다. 이름을 적을 때는 명명규칙에 주의해야합니다. 기본 InfoPlist 키값들이 참고하고 있는 이름들은 띄어쓰기가 되어 있어서 해보려고 했는데 오류가 났습니다.

다른 참고방법이 있을듯하지만 우선 이름을 똑같이 해서 작성하겠습니다.

Debug와 Release에 ID값들을 적어줍니다.

 

그리고 InfoPlist로 가서 User-Defined에서 명명한 이름을 참고해줍니다.

InfoPlist는 이것으로 끝입니다.

 

이제 이것을 코드로 가져오겠습니다.

enum InfoPlistKey {
	// InfoPlist에서 값을 가져올 가져올 딕셔너리의 키값
    static let googleAdID = "GADApplicationIdentifier"
}

struct AppSettings {
	// InfoPlist에서 가져올 딕셔너리
    private static var infoDict: [String:Any] {
        if let dict = Bundle.main.infoDictionary {
            return dict
        } else {
            fatalError("Info Plist file not found")
        }
    }
    
    // 가져온 구글 애드 키값
    static let googleAdID = infoDict[InfoPlistKey.googleAdID] as! String
}

이것을 배너뷰에 적용시켜주면 Debug, Release에 따라서 키값이 자동으로 적용됩니다.

'iOS > Xcode' 카테고리의 다른 글

[Xcode] 앱 버전 & 빌드 관리  (0) 2022.05.27