swift AppStore版本與本地版本比較

調(diào)用

        //use
        VersionCheckManager.checkVersion(appId: "836500024") { (compareResult) -> Void in

            DDLogDebug("\n\(compareResult)\n")
        }

封裝


import UIKit
import Alamofire

class VersionCheckManager: NSObject {

    // MARK: - check to see if you need to update the version
    // - Parameter appId: application appId
    // - Returns: true : The current version is lower than the store version
    // - false : The current version is equal to or higher than the store version
    static func checkVersion(appId:String,compareResult: @escaping (Bool) -> Void) {

        VersionCheckManager.appSoreVersion(appId: appId) { (appVersion) -> Void in
            let localVersion : String = VersionCheckManager.currentVersion()
            let result : Bool = VersionCheckManager().versionCompare(localVersion: localVersion, appStoreVersion: appVersion)
            compareResult(result)
        }
    }

    // MARK: - get app version on the AppStore
    // - Parameter appId:  application appId
    // - Returns: store version
    static func appSoreVersion(appId:String, handle: @escaping ((String) -> Void)) {
        let urlString = "http://itunes.apple.com/lookup?id=" + appId
        Alamofire.request(urlString, method: .get, parameters: [:])
            .responseJSON { (response) in

                if let value = response.result.value {
                    let appMsgDict:Dictionary = value as? Dictionary ?? [:]
                    let appResultsArray:NSArray = (appMsgDict["results"] as? NSArray)!
                    let appResultsDict:NSDictionary = appResultsArray.lastObject as? NSDictionary ?? ["":""]
                    guard let appStoreVersion = appResultsDict["version"] as? String else {
                        return
                    }
                    handle(appStoreVersion)
                }
        }
    }

    // MARK: - Get the current version well
    // - Returns: current version
    static func currentVersion() -> String {

        guard let localVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as? String else {
            return ""
        }
        return localVersion
    }

    // MARK: - compares the store version number to the current version number
    // - Parameter localVersion: currentVersion  appStoreVersion: appSoreVersion
    // - Returns: The current version is equal to or higher than the store version
   func versionCompare(localVersion:String,appStoreVersion:String) -> Bool {
        if checkSeparat(versionString: localVersion) == "" || checkSeparat(versionString: appStoreVersion) == ""{
            DDLogDebug("\n\("Only support '.''-'/''*'_'delimiter")\n")
            return false
        }
        guard let localVersionArray = cutUpNumber(vString: localVersion) as? [String] else { return false}
        guard let storeVersionArray = cutUpNumber(vString: appStoreVersion) as? [String] else {return false}
        return compareNumber(localArray: localVersionArray, storeArray: storeVersionArray)
    }

    // MARK: - extract link
    // - Parameter  versionString : version
    // - Returns: version
    func checkSeparat(versionString:String) -> String {
        var separated:String = ""
        if versionString.contains(".") {separated = "."}
        if versionString.contains("-") {separated = "-"}
        if versionString.contains("/") {separated = "/"}
        if versionString.contains("*") {separated = "*" }
        if versionString.contains("_") {separated = "_" }

        return separated
    }

    // MARK: - extract each individual version number
    // - Parameter vString: version
    // - Returns: version array
    func cutUpNumber(vString:String) -> NSArray {
        let  separat = checkSeparat(versionString: vString)
        let versionChar = NSCharacterSet(charactersIn:separat) as CharacterSet
        let vStringArr = vString.components(separatedBy: versionChar)
        return vStringArr as NSArray
    }

    // MARK: - compare the store version to the current version
    // - Parameter appId: application appId
    // - Returns: true : The current version is lower than the store version
    // - false : The current version is equal to or higher than the store version
    func compareNumber(localArray:[String],storeArray:[String]) -> Bool {
        for version in 0..<localArray.count {
            if  Int(localArray[version])! != Int(storeArray[version])! {
                if Int(localArray[version])! > Int(storeArray[version])! {
                    return true
                } else {
                    return false
                }
            }
        }
        return false
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末葛圃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巫湘,更是在濱河造成了極大的恐慌装悲,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尚氛,死亡現(xiàn)場離奇詭異诀诊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)阅嘶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門属瓣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來载迄,“玉大人,你說我怎么就攤上這事抡蛙』っ粒” “怎么了惋耙?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵婿屹,是天一觀的道長届腐。 經(jīng)常有香客問我,道長傀顾,這世上最難降的妖魔是什么短曾? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任婉徘,我火速辦了婚禮,結(jié)果婚禮上几晤,老公的妹妹穿的比我還像新娘圾浅。我一直安慰自己,他們只是感情好灸拍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著翻诉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芦圾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音茫经,去河邊找鬼。 笑死荤傲,一個胖子當(dāng)著我的面吹牛氨菇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播豌研,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼霜浴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了永丝?” 一聲冷哼從身側(cè)響起毕泌,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后撩炊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了路克。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡鱼辙,死狀恐怖座每,靈堂內(nèi)的尸體忽然破棺而出葱椭,到底是詐尸還是另有隱情蔓彩,我是刑警寧澤旷赖,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響斤彼,放射性物質(zhì)發(fā)生泄漏并扇。R本人自食惡果不足惜肴熏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镶摘。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背消恍。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工憎蛤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棚辽,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像箫踩,于是被迫代替她去往敵國和親慨削。 傳聞我的和親對象是個殘疾皇子玫芦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容