ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] 버전 컨트롤
    iOS/Swift 2020. 7. 6. 16:46
    준비물
    • Appversion: String
    • ServerVersion: String
    준비물 Value
    • Appversion = "1.0.0"
    • ServerVersion = "1.0.0"
    Code

     

    ⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️

    더보기

    //MARK:[version check begin]

    public class versionCheck {

        

        class func checkVersionState(serverVersion: String) -> VersionCheckType{

            

            let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String

            

            //현재 앱 버전과 서버에서 내려주는 버전이 같을경우

            if appVersion == serverVersion {

                //버전이 같습니다 APP_VERSION_SAME

                print("👌👌👌👌👌👌👌👌👌👌\nAppVersion Same\n앱버전이 같습니다.\n👌👌👌👌👌👌👌👌👌👌")

                return .APP_VERSION_SAME

            }

            

            //ex) 1.0.0

            let currentServerVersion = serverVersion.split(separator: ".")//["1", "0", "0"]

            let currentAppVersion = appVersion.split(separator: ".")//["1", "0", "0"]

            

            //서버혹은 앱버전이 소수점이 많은 상태 ex)App 1.0 ! Server 1.0.0

            if currentAppVersion.count != currentServerVersion.count {

                print("⁉️⁉️⁉️⁉️⁉️⁉️⁉️⁉️⁉️⁉️\nAppVersion&ServerVersion\nDecimal point Not Match Error\n앱버전과 서버버전의 소수점이 달라요. 버전컨트롤을 안하는것 같습니다.\n⁉️⁉️⁉️⁉️⁉️⁉️⁉️⁉️⁉️⁉️")

                return .APP_VERSION_ERROR

            }

            

            var levelCount = 0//메이저, 마이너, 버그픽스 레벨 카운트

            

            for data in currentAppVersion {

                

                let appVersionData = Int(data)!//앱버전

                let serverVersionData = Int(currentServerVersion[levelCount])!//서버버전

                

                var versionCheckString: String

                

                switch levelCount {

                case 0: versionCheckString = "MajorVersion"

                    break

                case 1: versionCheckString = "MinorVersion"

                    break

                case 2: versionCheckString = "BugfixVersion"

                    break

                    //버전의 소수점이 높아진다면 Case에 텍스트를 추가하여 입력 및 구분하도록 합니다.

                    /*

                case 3: versionCheckString = "NormalVersion"

                    break

                    */

                default:

                    versionCheckString = "??????"

                    break

                }

                

                

                if appVersionData != serverVersionData {

                    //버전이 같지않아요 낮거나 높아요

                    if appVersionData > serverVersionData {

                        //앱버전이 높아요 이건 심사중일수도 있어요

                        print("⤴️⤴️⤴️⤴️⤴️⤴️⤴️⤴️⤴️⤴️\nApp \(versionCheckString) High\n앱버전이 높습니다.\n⤴️⤴️⤴️⤴️⤴️⤴️⤴️⤴️⤴️⤴️")

                        return .APP_VERSION_HIGH

                    } else if appVersionData < serverVersionData {

                        //앱버전이 낮아요

                        print("⤵️⤵️⤵️⤵️⤵️⤵️⤵️⤵️⤵️⤵️\nApp \(versionCheckString) Low\n앱버전이 낮습니다.\n⤵️⤵️⤵️⤵️⤵️⤵️⤵️⤵️⤵️⤵️")

                        return .APP_VERSION_LOW

                    }

                }

                

                levelCount += 1

                if levelCount == currentAppVersion.count {

                    

                    break

                }

            }

            print("👌👌👌👌👌👌👌👌👌👌\nAppVersion Same\n앱버전이 같습니다.\n👌👌👌👌👌👌👌👌👌👌")

            return .APP_VERSION_SAME

        }

    }

     

    enum VersionCheckType {

        case APP_VERSION_LOW

        case APP_VERSION_SAME

        case APP_VERSION_HIGH

        case APP_VERSION_ERROR //서버버전과 앱버전의 분기가 다를때 나는 에러

    }

    //MARK:[version check end]

    ⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️

    예제

    이렇게 사용하면 된다.

     

    댓글