Swift Splash 화면에서 App Store 앱 업데이트 확인하기
시중의 iOS 앱은 처음 실행 시 로딩중, 데이터 불러오기, 앱 업데이트 확인 등 모든 기능을 넣을 수 있는 것 처럼 나옵니다.
실제로 개발해보면 ... ?
시스템이 앱을 불러오는 동안 표시하는 화면이 Launch Screen이기 때문에
LaunchScreen.storyboard에 배경 색상과 이미지, 텍스트만 넣을 수 있어요! (다운받은 폰트, 애니메이션도 적용 불가능)
Splash 화면에서 처리하는 방법을 알아봅시다.
어이없게도 동일한 화면을 하나 더 ! 만듭니다.
Splash 화면인 척 앱 업데이트를 체크합니다. (어찌보면 앱 시작 전 초기 셋팅을 수행하니까 틀린 건 아니네요.)
제 Main.storyboard에 동일한 SplashViewController를 만들어주었습니다.
실제 앱 업데이트는 SplashViewController.swift 파일에서 작성합니다.
크롬이나 사파리에서 https://itunes.apple.com/lookup?bundleId=번들ID 를 쳐보면 1.txt 파일이 다운받아집니다. 이 결과를 파싱해서 버전을 체크합니다.
물론 App Store에 업로드되지 않은 초기 버전이라면 앱 정보가 없겠죠?
저는 다음과 같이 checkForUpdates() 함수를 구현했습니다.
URL로부터 얻은 앱스토어 storeVersion과 지금 설치된 앱의 localVersion을 비교합니다.
저는 Alamofire framework를 사용했습니다.
import Alamofire
/* 업데이트 확인 */
func checkForUpdates() {
guard let bundleId = Bundle.main.bundleIdentifier else {
// 다음 화면으로 이동
return
}
let url = "https://itunes.apple.com/lookup?bundleId=\(bundleId)"
AF.request(url).responseJSON { response in
guard let json = response.value as? NSDictionary,
let results = json["results"] as? NSArray,
let entry = results.firstObject as? NSDictionary,
let storeVersion = entry["version"] as? String else {
NSLog("Failed to get store version. Repsonse = \(response)")
// 다음 화면으로 이동
return
}
guard let localVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String else {
NSLog("Failed to get local version.")
// 다음 화면으로 이동
return
}
// 업데이트 필요
if storeVersion.compare(localVersion, options: .numeric) == .orderedDescending {
// 업데이트 권고 창 표시
} else {
// 다음 화면으로 이동
}
}
}
저는 이렇게 업데이트 권고 창을 표시해줬습니다. 업데이트 버튼을 누르면 앱스토어로 이동합니다.
앱스토어의 내 앱 여는 방법입니다.
/* 앱스토어 열기 */
func openAppStore() -> Bool {
guard let url = URL(string: "itms-apps://itunes.apple.com/app/id아이디를넣어주세요"),
UIApplication.shared.canOpenURL(url) else { return false }
UIApplication.shared.open(url, options: [:], completionHandler: nil)
return true
}
앱 ID는 App Store Connect > 앱 정보 > 일반 정보 > Apple ID에 나와있습니다.
업데이트 확인 기능은 초기 버전부터 넣는게 좋습니다.
1.0.1에 업데이트 확인 기능을 넣었지만, 실제 사용자는 1.0.2이 되고나서야 업데이트 권고 창을 볼 수 있게 됩니다.
- 1.0.0 : 스토어에 올라간 버전
- 1.0.1 : 업데이트 확인 기능 추가
- 1.0.2 : XX 기능 추가
끝 ~ 😊