주로 설정 화면에 앱의 현재 버전과 앱스토어에 출시된 앱의 최신 버전을 표기한다. 현재 버전과 최신 버전을 어떻게 가져올 수 있는지 알아보자.
현재 앱의 버전을 가져오는 함수다.
func getCurrentVersion() -> String {
guard let dictionary = Bundle.main.infoDictionary,
let version = dictionary["CFBundleShortVersionString"] as? String else { return "" }
return version
}
위의 함수를 이용하면 이렇게 현재 버전을 출력할 수 있다.
print("현재 버전 : \(self.getCurrentVersion())")
// 현재 버전 : 1.1.0
최신 버전을 확인하려면 먼저 해야 할 일이 있는데, App Store Connect에 있는 앱의 Bundle ID를 알아와야 한다.
[본인 앱 → 앱 정보 → 일반 정보 → 번들 ID]
그리고 아래 함수가 최신 버전을 가져오는 함수인데, 두 번째 줄의 번들 ID 부분에 본인이 복사한 번들 ID를 붙여 넣는다.
번들ID가 포함된 URL을 브라우저 주소창에 넣어보면 json 파일이 나타날텐데, 이 파일은 현재 앱스토어에 있는 본인 앱의 정보다.
json 파일에서 version을 검색해보면 정확히 한 개가 나오는데 그게 최신 버전이다.
func getUpdatedVersion() -> String {
guard let url = URL(string: "http://itunes.apple.com/lookup?bundleId=번들ID"),
let data = try? Data(contentsOf: url),
let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any],
let results = json["results"] as? [[String: Any]],
results.count > 0,
let appStoreVersion = results[0]["version"] as? String else { return "" }
return appStoreVersion
}
따라서 위의 코드는 JSON을 파싱 해서 version 부분만 가져오는 것이다.
이렇게 앱의 현재 버전과 최신 버전을 가져오는 것은 실제로 앱을 개발하는 데 있어 자주 사용된다.
여기서 더 나아가 앱의 현재 버전과 최신 버전이 다를 경우 업데이트하도록 유도하는 구현까지 해보면 좋을 듯 싶다.
💙 참고한 블로그 💙