-
Swift Splash 화면에서 App Store 앱 업데이트 확인하기🧑💻/Swift 2023. 4. 14. 20:05반응형
시중의 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 기능 추가
끝 ~ 😊
반응형