Swift - 检查App新版本

我们可以使用iTunes的接口,来实现新版本提醒功能。
http://itunes.apple.com/lookup?id=xxxxxxxx
这里,我们使用Alamofire+SwiftyJSON来请求,并将封装成一个方法。代码如下:

import Alamofire
import SwiftyJSON

class VersionChecker {
    func checkUpdateForAppID(ID: String, newVersionHandler: (thisVerion: String, newVersion: String) -> Void) {
        Alamofire.request(.GET, "http://itunes.apple.com/lookup?id=\(ID)").responseJSON {
            guard
                let value = $0.result.value,
                let json = Optional(JSON(value)),
                let version = json["results"].arrayValue.first?["version"].string,
                let versionInt = Int(version.stringByReplacingOccurrencesOfString(".", withString: "")),
                let thisVersion = (NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as? String),
                let thisVersionInt = Int(thisVersion.stringByReplacingOccurrencesOfString(".", withString: ""))
            else {
                NSLog("无法获取到App版本信息")
                return
            }
            print(json)
        
            if versionInt > thisVersionInt {
                // 在下面的回调中可以做一些如弹窗等操作提示用户更新
                newVersionHandler(thisVerion: thisVersion, newVersion: version)
            } else {
                NSLog("App已经是最新版本")
            }
        }
    }
}

调用时只需要:

VersionChecker().checkUpdateForAppID(YourAppID) {
    let title = "新版本提醒"
    let message = "App Store中有新版本V\($1)(目前版本V\($0)),请前往更新。"
    // 弹窗...
    // 如果用户点击了“更新”,则跳去App Store
}

所以如果你手上的App是V1.2.0,而App Store上的版本是V1.3.0,就会有提示了。要注意的是,VersionChecker对象在调用后会马上被释放。如果你不想这样,你也可以把它写成一个类方法。

附:跳去App Store的代码

let AppID = "xxxxxxxxxxxx" 
if let URL = NSURL(string: "https://itunes.apple.com/us/app/id\(AppID)?ls=1&mt=8") {
    UIApplication.sharedApplication().openURL(URL)
}

希望对各位读者有用 :)

你可能感兴趣的:(Swift - 检查App新版本)