ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 기능 추가

     

    끝 ~ 😊


    출처 : iOS App MyLittleUniverse

    반응형

    댓글

Designed by Tistory.