(Swift) iOS 앱이 최신 버전인지 확인

8489 단어 iOSSwift3.0Xcode8

소개



앱 버전이 AppStore 버전과 비교하여 최신 버전인지 확인하는 방법을 설명했습니다.
예를 들면 구버전의 경우는 AppStore에 유도하고 싶은 경우 등에 사용할 수 있을까 생각합니다.

코드



Apple ID(앱 ID)를 전달하면 결과(AppVersionCompareType)가 반환됩니다.

AppVersionCompare.swift
import Foundation

enum AppVersionCompareType {
    case latest
    case old
    case error
}

class AppVersionCompare {
    static func toAppStoreVersion(appId: String, completion: @escaping (AppVersionCompareType) -> Void) {
        guard let url = URL(string: "https://itunes.apple.com/jp/lookup?id=\(appId)") else {
            completion(.error)

            return
        }

        let request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 60)
        let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in
            guard let data = data else {
                completion(.error)

                return
            }

            do {
                let jsonData = try JSONSerialization.jsonObject(with: data) as? [String: Any]
                guard let storeVersion = ((jsonData?["results"] as? [Any])?.first as? [String : Any])?["version"] as? String
                    , let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String else {
                        completion(.error)

                        return
                }

                switch storeVersion.compare(appVersion, options: .numeric) {
                case .orderedDescending:
                    //appVersion < storeVersion
                    completion(.old)
                case .orderedSame, .orderedAscending:
                    //storeVersion <= appVersion
                    completion(.latest)
                }
            }catch {
                completion(.error)
            }
        })

        task.resume()
    }
}

사용법



아래와 같이 사용합니다.

viewDidLoad
        AppVersionCompare.toAppStoreVersion(appId: appId) { (type) in
            switch type {
            case .latest:
                print("最新バージョンです")
            case .old:
                print("旧バージョンです")
            case .error:
                print("エラー")
            }
        }

아래의 앱 버전(Version 이 경우 2.0.0)과 AppStore 버전을 비교하고 있습니다.


마지막으로



GitHub에 코드를 넣습니다.
htps : // 기주 b. 코 m / 히데 유키 토네 / 아

참고
ぃ tp // 코 m / 토끼 / ms / 5f8 1f1f41 58f9 0035

좋은 웹페이지 즐겨찾기