iOS
Swift
swift4

[swift] 端末のバージョンを比較

More than 1 year has passed since last update.

端末のバージョンを比較

アプリに重大なバグが見つかった時など,アプリ起動時にアップデート通知をしたいですよね.何が起こるか分からないので,appStoreにアップロードする前に,実装しておきたいところです.端末のバージョンと最新のバージョンの比較メソッドは,今後いつも使うと思うのでメモとして残しておきます.

ビルドのバージョンを取得

以下のコードで,buildのバージョンを取得できます.
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String

最新のバージョンと比較

最新のbuildバージョンをサーバーから取ってきたとします.splitして比較してあげたら楽ですね.

version.swift
enum currentVersionStatus {
    case lastest
    case old
    case error
}

func compareVersion(lastest: String, current: String) -> currentVersionStatus {
    let lastest_split = lastest.components(separatedBy: ".")
    let current_split = current.components(separatedBy: ".")
    for (l, c) in zip(lastest_split, current_split) {
        if let lastInt = Int(l), let currentInt = Int(c) {
            if currentInt < lastInt { return .old }
            else if currentInt > lastInt { return .lastest }
        } else { return .error }
    }
    return .lastest
}

let lastestVersion = "2.0.5"
let currentVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
compareVersion(lastest: lastestVersion, current: currentVersion)

// example
compareVersion(lastest: "1.0.5", current: "1.0.2") // => old
compareVersion(lastest: "2.0.5", current: "1.0.10") // => old
compareVersion(lastest: "2.1.3", current: "2.1.3") // => lastest
compareVersion(lastest: "3.1.7", current: " ") // => error