🧑‍💻/Swift

Swift Splash 화면에서 App Store 앱 업데이트 확인하기

유리맥 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 기능 추가

 

끝 ~ 😊


출처 : iOS App MyLittleUniverse

반응형